0
最近私は十分に私を疑問に思ったコードでバグを見つけました。Pythonグローバル変数スコープ
def test():
print(memory)
if __name__ == "__main__":
memory = 1
test()
memory
は、ファイルの先頭に定義されたが、これは私のためにすべてのスコープ規則を破るように思えるされた場合、それは明らかである:主な問題は、以下のコードが動作することです。しかし何らかの理由があるはずです。
は、私には論理的なようです。 'test()'が呼ばれるまでに、 'memory'はすでに定義されています。 – ifconfig
Pythonはプログラムを実行するためにプログラムを実行します。 yiuが関数を定義するとき、それはあなたがそれを呼び出すときにのみ実行されるので、Pythonは最初の実行で内部を見ることさえありません。あなたは 'test()'への呼び出しをその関数自体の内容に置き換えると仮定するかもしれません。 – avloss
@ifconfig経験後の論理?私は、宣言がコンパイルされないうちに関数内でグローバル変数を使用するCとコードを使用していました。これは私にとっては論理的だと思われます。 –