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

Python の「input()」関数で「NameError」が発生するのはなぜですか?それを回避するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-31 22:56:11
オリジナル
685 人が閲覧しました

Why Does Python's `input()` Function Cause

Input() エラー: Python での名前エラーの処理

input 関数を利用するスクリプトを実行しようとすると、「NameError: name '」というエラーが発生する場合があります。 ...' が定義されていません。」これは、有効な名前または変数がないために入力関数がユーザーの入力を Python 式として評価しようとして失敗した場合に発生します。

Python 2.7 の Input() について

Python 2.7 、入力関数は独特の動作を実行します。ユーザーの入力を Python 式として解釈します。スクリプトが文字列を予期している場合、入力を引用符で囲む必要はありません。ただし、文字列が期待されているにもかかわらず引用符で囲まれている場合、追加の引用符が存在するためにエラーが発生します。

例:

input_variable = input("Enter your name: ")  # Expecting a string without quotes
print("Your name is " + input_variable)  # Error: NameError
ログイン後にコピー

これを Python 2.7 で修正するには、次のようにします。代わりに raw_input 関数を利用してください。この関数は、ユーザーの入力を Python 式として解釈せずに単に読み取ります。Python 3.x の

input_variable = raw_input("Enter your name: ")  # Expecting a string with quotes
print("Your name is " + input_variable)  # No error
ログイン後にコピー

Input()

Python 3.x では、raw_input 関数の名前が変更されました。を入力します。したがって、Python 2.7 の raw_input と同様の動作をします。つまり、ユーザーの入力を解釈せずに文字列として読み取ります。

Python 2.7 の Input() のセキュリティへの影響

Python での入力以来2.7 はユーザー入力を評価するため、セキュリティ上の懸念が生じます。悪意のあるユーザーが適切にサニタイズまたは検証されていないコマンドを入力すると、悪意のあるコードが実行される可能性があります。たとえば、スクリプトが OS モジュールをインポートし、ユーザーが入力として次を入力した場合:

os.remove("/etc/hosts")
ログイン後にコピー

これにより、/etc/hosts ファイルが削除される可能性があり、代わりに raw_input を使用する重要性が強調されます。機密性の高いユーザー入力を読み取るため。

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

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