Основанный на изображениях каркас браузера WebAR?

Когда мы это делаем:

def foo(a=[]):
    ...

... мы присваиваем аргумент a списку unnamed , если вызывающий объект не передает значение a .

Чтобы упростить эту дискуссию, давайте временно присвоим неназванному списку имя. Как насчет pavlo?

def foo(a=pavlo):
   ...

В любое время, если вызывающий абонент не сообщает нам, что a, мы повторно используем pavlo.

Если pavlo изменен (модифицируется), а foo заканчивает его модификацию, эффект, который мы замечаем в следующий раз, foo вызывается без указания a.

Итак, это то, что вы видите (помните, pavlo инициализируется в []):

 >>> foo()
 [5]

Теперь pavlo - [5].

Вызов foo() снова снова изменяет pavlo:

>>> foo()
[5, 5]

Задание a при вызове foo() гарантирует, что pavlo не коснулся.

>>> ivan = [1, 2, 3, 4]
>>> foo(a=ivan)
[1, 2, 3, 4, 5]
>>> ivan
[1, 2, 3, 4, 5]

Итак, pavlo все еще [5, 5].

>>> foo()
[5, 5, 5]
0
задан Dino Velić 26 March 2019 в 14:07
поделиться