raw_input と input は両方とも Python の組み込み関数であり、コンソールから入力を読み取ることでユーザーと対話します。しかし、それらの機能は同じではありません。ここでは、使用法の違いを示す 2 つの例を示します。
例 1
Python 2.7.5 (default, Nov 18 2015, 16:26:36) [GCC 3.4.5 20051201 (Red Hat 3.4.5-2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> raw_input_A = raw_input("raw_input: ") raw_input: PythonTab.com >>> print raw_input_A PythonTab.com >>> input_A = input("Input: ") Input: PythonTab.com Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name 'PythonTab' is not defined >>> >>> input_A = input("Input: ") Input: "PythonTab.com" >>> print input_A PythonTab.com >>>
例 2
Python 2.7.5 (default, Nov 18 2015, 16:26:36) [GCC 3.4.5 20051201 (Red Hat 3.4.5-2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> raw_input_B = raw_input("raw_input: ") raw_input: 2015 >>> type(raw_input_B) <type 'str'> >>> input_B = input("input: ") input: 2015 >>> type(input_B) <type 'int'> >>>
例 1 ご覧のとおり、両方の関数は文字列を受け取ることができますが、raw_input() はコンソールから入力を直接読み取ります (任意のタイプの入力を受け取ることができます)。 input() に関しては、正当な Python 式を読み取れることが望まれます。つまり、文字列を入力するときは引用符を使用して囲む必要があります。そうしないと、SyntaxError が発生します。
例 2 ご覧のとおり、 raw_input() はすべての入力を文字列として扱い、文字列型を返します。また、input() は純粋な数値入力を処理する際に独自の特性を持ち、同時に入力数値の型 (int、float) を返します。例 1 に示すように、input() は正当な Python 式を受け入れることができます。例: input( 1 + 3 ) は int として 4 を返します。
Python マニュアルを確認して次のことを確認してください:
input([prompt])
eval(raw_input(prompt)) と同等
input() は基本的に raw_input() を呼び出した直後に raw_input() を使用して実装されます。その後、() 関数が呼び出されるため、式を引数として input() に渡すこともでき、式が評価されて返されます。
しかし、「組み込み関数」には次のような文があります: ユーザーからの一般的な入力には raw_input() 関数の使用を検討してください。
input() に特別な必要がない限り、一般的に raw_input() を使用することをお勧めします。ユーザーと対話します。