初心者向けに書かれたネット記事を見ながら、pythonをインストールして、pytohnの動かし始めたら、
NameError: name ‘python’ is not definedというエラーが出てきて意味がわからなかったという超初心者である私のメモを書いておきます。
このような初歩的な問題でつまずく人に向けて、解決方法だけでなく原因や意味まで説明して書かれていた記事がすぐに見つからなかったので、基礎的な説明も含めて書いておきます。
ただ、私もいまだに完全理解からほど遠いので、厳密で正確な理解よりも、とにかくなんとなく意味やイメージがわかればいいという人向けになります。
(windowsを例に説明しています)
目次
1.コマンドとは
パソコンに処理を命令するための仕組みに、コマンドというものがあります。
自分がPCに行わせたいことをコマンドで命令します。
コマンドを打ちこむ画面(行)のことをコマンドライン(コマンドラインインタフェース)と言います。
Windowsの場合で言えば、コマンドプロンプトやPowerShellのことです。
コマンドには、内部コマンドと外部コマンドがあります。
内部コマンド
内部コマンドは、PCの起動時に自動的にメモリに読み込まれていて、プログラムの実体ファイルなどは存在しません。
cd や copy、dirなどがあります。
外部コマンド
外部コマンドは、プログラムの実体ファイルがどこかのディレクトリ(フォルダ)に格納されています。
拡張子が「exe」などのプログラムファイル
拡張子が「bat」などのバッチファイル
アプリケーションが関連付けされた拡張子を持つファイル
など様々にあります。
そして、外部コマンドを打つとその実体ファイルのプログラムが実行されます。
例えば、python.exe(あるいはpython)と打ちこめば、Pythonが起動するということです。
2.NameError: name ‘python’ is not definedの原因と解決方法
NameError: name ‘python’ is not definedの文を日本語で和訳すると、
名前に関してのエラー:’python’は定義されていませんという意味になります。
ここで私が不思議に思ったのは、さっきはpythonというコマンドは普通に使えていたのに、どうして急にpythonが定義されていないなんてエラーが出るのだろう? ということでした。
上の文章をもっと補って意訳すると、
名前に関してのエラー:’python’(という関数名、変数名)は定義されていませんという意味になります。
どういうことなのか解説します。
ここで解決のポイントになるのは、
外部コマンドpythonを打って、OSがpythonを起動させてからは、コマンドラインに打ち込む文字の命令はOSに対しての命令ではなく、実行中であるpythonのプログラム(インタプリタ)に対しての命令になる、という認識を持っているかどうかです。
なので、OSに対しての命令である’python’という外部コマンドはあるわけですが、pythonプログラム内では(定義されていないのだから)’python’という関数や変数はないということでエラーが起きるということです。
これを解決するには、一度、exit()で実行中のpythonを終わらせてから、改めてコマンドのpythonを打てばいいということになります。
pythonのバージョンの調べたときのエラーと正しい方法
参考に、pythonのバージョンの調べるときに出てきたエラーと正しい方法を載せておきます。
細かい記述方法はバージョンやOSによって違うと思いますので、調べてください。
注目点は、赤枠で囲ってあるマーク(プロンプトと言います)の違いを見れば、自分が打ち込んだ命令がOSに対してのものか、pythonに対してのものなのかが分かるということですね。