ホームページ > バックエンド開発 > Python チュートリアル > Python 2.7 と 3.x: `input()` によって `NameError: name '...' が定義されていません` が発生するのはなぜですか?

Python 2.7 と 3.x: `input()` によって `NameError: name '...' が定義されていません` が発生するのはなぜですか?

Linda Hamilton
リリース: 2024-12-25 18:43:41
オリジナル
377 人が閲覧しました

Python 2.7 vs. 3.x:  Why Does `input()` Cause a `NameError: name '...' is not defined`?

Input() エラー: 名前について理解エラー: 名前 '...' が定義されていません

Python 2.7 および 3.x では、 input() 関数はユーザー入力を受け入れるために使用されます。ただし、これらのバージョンの input() の動作には微妙な違いがあります。

Python 2.7

Python 2.7 では、input() 関数は文字列を評価します。ユーザーが Python 式として入力します。これは、既存の変数または関数の名前を入力すると、input() 関数がその変数の値を返すか、その関数を実行することを意味します。

たとえば、「dude」という名前の変数があるとします。値「thefourtheye」の場合、input() 関数に「dude」と入力すると、「thefourtheye」が返されます。ただし、現在のコンテキストで定義されていない名前を入力すると、NameError が発生します。

Python 3.x

Python 3.x では、 input() 関数は、Python 2.7 の raw_input() 関数と同等です。これは、単に標準入力から行を読み取り、それを評価せずに文字列として返します。

これは、input() 関数に変数名や関数名を入力して、それらの値を返すことを期待することができなくなったことを意味します。代わりに、input() は常に文字列を返し、必要に応じて適切な型 (int または float など) に変換できます。

セキュリティに関する考慮事項

input() が Python 2.7 のユーザー入力を評価するという事実は、セキュリティ リスクを引き起こす可能性があります。ユーザーが悪意のあるコードを入力すると、Python インタープリターによって実行される可能性があります。したがって、コード内での input() の使用方法に注意することが重要です。

Python 3.x では、ユーザー入力が評価されないため、input() に関連するセキュリティ リスクが大幅に軽減されます。ただし、ユーザー入力をコードで使用する前にサニタイズすることをお勧めします。

以上がPython 2.7 と 3.x: `input()` によって `NameError: name '...' が定義されていません` が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート