Почему не используется нелокальная переменная области видимости в качестве значения по умолчанию для параметра? - PullRequest
0 голосов
/ 21 ноября 2011

Код объяснил бы это намного лучше:)

def a():
    x=0
    def b(z=x):
        print("X: %d, Z: %d" % (x,z,))
    x=5
    b()

Результат:

X: 5, Z: 0

Что здесь происходит?

(Хорошо, теперь я понялэто вышло)

1 Ответ

2 голосов
/ 21 ноября 2011

Хорошо, ответ из документации по Python:

Значения параметров по умолчанию оцениваются при выполнении определения функции. Это означает, что выражение вычисляется один раз, когда функция определена, и что для каждого используется одно и то же «предварительно вычисленное» значение звоните.

Достаточно справедливо.

...