ホームページ > バックエンド開発 > Python チュートリアル > Python 2.7 で「input()」によって「NameError」が発生するのはなぜですか?それを修正するにはどうすればよいですか?

Python 2.7 で「input()」によって「NameError」が発生するのはなぜですか?それを修正するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-30 22:38:18
オリジナル
514 人が閲覧しました

Why Does `input()` Cause a `NameError` in Python 2.7, and How Can I Fix It?

input() エラー: NameError 'Name' が定義されていないの解決

単純なスクリプトを実行しようとすると、次のエラーが発生する可能性があります:

NameError: name '...' is not defined
ログイン後にコピー

このエラーは、ユーザー入力を評価する input() 関数で Python 2.7 を使用すると発生します。パイソン表現。文字列入力を予期する場合、この評価は混乱を招く可能性があります。

Python 2.7 の特異性

Python 2.7 では、ユーザー入力に次の 2 つのオプションが提供されます。

  • input : 入力を Python として評価しますExpression.
  • raw_input: 評価なしで入力を文字列として読み取ります。

Python 2.7 では、次のことが当てはまります:

input = eval(raw_input)
ログイン後にコピー

したがって、input("Enter your name: ") を使用する場合、入力文字列 (例: "dude,")変数名として評価されます。 「dude」という名前の変数がスクリプト内に存在しない場合、エラーがスローされます。

Python 2.7 の input() に関するセキュリティの問題

input() の評価機能は、セキュリティに影響を及ぼします。たとえば、os モジュールがインポートされ、ユーザーが「os.remove("/etc/hosts")」と入力した場合、この Python 式が実行され、システムに損害を与える可能性があります。

Python 3.x およびBeyond

Python 3.x には、本質的に Python 2.7 の raw_input() を模倣する input() 関数が 1 つだけあります。これにより、評価の側面が排除され、入力プロセスが簡素化されます。

解決策と推奨事項

文字列入力を読み取るときに Python 2.7 で NameError を解決するには、input の代わりに raw_input 関数を使用することをお勧めします。これにより、入力が文字列として扱われ、Python 式として評価されなくなります。さらに処理または変換が必要な場合は、適切な関数を使用して文字列入力を処理できます。

以上がPython 2.7 で「input()」によって「NameError」が発生するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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