[解決済み] if文の中で初期化された変数のスコープとは?
2022-03-16 01:47:26
質問
Python初心者なので、おそらく単純なスコープに関する質問だと思います。Pythonのファイル(モジュール)内の次のコードが私を少し混乱させています。
if __name__ == '__main__':
x = 1
print x
私がこれまで使ってきた他の言語では、このコードは例外を投げることになります。
x
変数は
if
文の外には存在しないはずです。しかし、このコードは実行され、1が表示されます。どなたかこの挙動を説明できる方はいらっしゃいますか?モジュール内で作成されたすべての変数は、モジュール全体から利用可能なグローバル変数なのでしょうか?
解決方法は?
Pythonの変数は、代入された一番内側の関数、クラス、モジュールにスコープされます。のような制御ブロックは
if
と
while
ブロックの中で代入された変数はカウントされません。
if
は、関数、クラス、モジュールにスコープされたままです。
(ジェネレータ式またはリスト/セット/ディクショナリ内包で定義される暗黙の関数
する
がカウントされ、ラムダ式もカウントされます。代入文は入れられませんが、ラムダパラメータと
for
節のターゲットは暗黙の代入です)。
関連
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] JavaScriptで変数が存在するか(定義されているか/初期化されているか)をチェックする
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
任意波形を生成してtxtで保存するためのPython実装
-
Python LeNetネットワークの説明とpytorchでの実装
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。