Я изучаю Python и натолкнулся на пример, который я не совсем понимаю. В официальном учебнике, следующий код Дан:Область применения параметра по умолчанию в Python
i = 5
def f(arg=i):
print(arg)
i = 6
f()
Исходя из C++, имеет смысл интуитивно для меня, что это будет печатать 5. Но я хотел бы также понять техническое объяснение: «Значение по умолчанию оцениваются в точке определения функции в определяющей области ». Что здесь означает «определяющая область»?
* «Определение области действия» * означает область действия функции, т.е. См. Также: http://stackoverflow.com/q/1132941/3001761 – jonrsharpe
«Определение области видимости»: на Python вы можете иметь функцию локально ограниченного действия, то есть функцию внутри функции. Ближе всего к C++ - это лямбда, которые являются новыми в C++ (у Python есть также lambdas). – cdarke
Короткий ответ: значения по умолчанию сохраняются как кортеж в 'f.func_defaults', его значение равно' (5,) 'в вашем коде. – gdlmx