какие различия в 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, [изменяемым аргументом по умолчанию] (http://stackoverflow.com/questions/1132941/least -astonishment-в-питона-The-изменяемый по умолчанию аргумент) –