かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Python 後で使う用に空の変数だけ作っておきたい。(変数宣言だけしたい)

なんとなくPythonJavaScriptに似てる気がしてきてる今日このごろ。

後のループとかで使うために関数の先頭とかで空の変数だけ作っておきたい(関数宣言だけしたい)ってのに少しハマったのでメモ。

varみたいな宣言文がPythonには無いので、変数だけ作ってみたらエラーになりました。

my_var
# => NameError: name 'my_var' is not defined

Pythonの変数は代入しないと作成されない。

Pythonの変数は型もなく、値を設定(代入)することで変数が作成されるという仕組みなようです。
つまり、何かしら代入しないと、その変数を探して「そんな名前の変数はない」とエラーを出すってことみたいです。

何かしら値を与えればOK

my_var = None

JavaScriptの変数巻き上げの癖で関数とかの先頭で変数定義したくなるので、同じような書き方しててハマってしましました。 先に使われる変数がある方が個人的には見通しが良いように感じるのですが、空文字''ではなく、Noneで変数を作成してもメモリ効率とかの面では良くないのでしょうか?
まぁ見通しが悪くなるくらい大きな関数作るなって話ですよね。。。


[参考]

変数人間 (ハヤカワ文庫SF)

変数人間 (ハヤカワ文庫SF)