Код объяснил бы это намного лучше:)
def a(): x=0 def b(z=x): print("X: %d, Z: %d" % (x,z,)) x=5 b()
Результат:
X: 5, Z: 0
Что здесь происходит?
(Хорошо, теперь я понялэто вышло)
Хорошо, ответ из документации по Python:
Значения параметров по умолчанию оцениваются при выполнении определения функции. Это означает, что выражение вычисляется один раз, когда функция определена, и что для каждого используется одно и то же «предварительно вычисленное» значение звоните.
Достаточно справедливо.