ホームページ  >  記事  >  バックエンド開発  >  raw_input() と input() の違い

raw_input() と input() の違い

高洛峰
高洛峰オリジナル
2016-10-17 13:19:031093ブラウズ

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 &#39;PythonTab&#39; 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 &#39;str&#39;>
>>> input_B = input("input: ")
input: 2015
>>> type(input_B)
<type &#39;int&#39;>
>>>

例 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() を使用することをお勧めします。ユーザーと対話します。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。