SyntaxWarning:名前 'x'はグローバル宣言の前に割り当てられますglobalx



Syntaxwarning Namex Is Assigned Before Global Declaration Global X



発生した問題のうち、解決されていないものをいくつか示します。

上記のエラーの1つが表示されましたが、エラーの根本的な原因がわかりません。
Pythonの世界的な使用は比較的少ないです(それは仕事で使用されていないと言われるべきです)。グローバルの最も一般的なシナリオは、関数varの外部で定義された変数を使用する関数である必要があります。



これが私が書いたいくつかの例であり、いくつかは構文警告を報告し、いくつかは報告しませんでした。

Python 2.7.5
  • 例:
# filename: a.py x = 0 def func(a, b, c): if a == b: global x x = 10 #elif b == c: # global x # x = 20

出力

$ python a.py No
# filename: a.py x = 0 def func(a, b, c): if a == b: global x x = 10 elif b == c: global x x = 20

出力

$ python a.py a.py:9: SyntaxWarning: name 'x' is assigned to before global declaration global x
# filename: b.py var = 'xxx' if __name__ == '__main__': global var var = 'yyy'

http://effbot.org/zone/syntaxwarning-name-assigned-to-before-global-declaration.htm
前書き:
この問題について言及しましたが、明確に説明していませんでした。



http://www.cnblogs.com/shadow21/p/3573918.html
前書き:
'globalはグローバル変数であることを説明します。 xの値が以前に定義されている場合、それ以降のxの値は変更できません。

Python名前空間が関係しているようですが、LEGBとは何の関係もありません...