1
example1
とexample 2
とexample 3
の違いは何ですか?私は試したが、何も得ていない。私は何かを見逃してしまった、または正しく使用していないと思う。グローバル名 '...'が定義されていません
例1:
def ex1(var1=g_var):
pass
def ex2():
global g_var
g_var = True
ex1()
if __name__ == '__main__':
ex2()
例2:
def ex1():
print(g_var)
# pass
def ex2():
global g_var
g_var = True
ex1()
if __name__ == '__main__':
ex2()
例3:
g_var = True
def ex1(var1=g_var):
pass
def ex2():
ex1()
if __name__ == '__main__':
ex2()
example 1
とexample 3
は同じものであることを思われます。
example 2
およびexample 3
が正常に実行されます。しかしexample 1
私にエラーNameError: global name 'g_var' is not defined
を教えてください。
これはpythonの一般的な "gotcha"と密接に関連していることに注意してください。[可変デフォルト引数](http://stackoverflow.com/questions/1132941/least -astonishment-in-python-the-mutable-default-argument)は、 –