Из программирования Саммерфилда на Python3:
в нем говорится следующее: когда заданы значения по умолчанию, они создаются во время выполнения оператора def, а не при вызове функции. Но мой вопрос для следующего примера:
def append_if_even(x, lst =None):
lst = [] if lst is None else lst
if x % 2 ==0:
lst.append(x)
return lst
При первом выполнении определения времени lst указывает на None. Но после вызова функции append_if_even(2)
Не должен ли lst указывать на [2], так как после lst.append(x) lst больше не указывает на None?
Почему при следующем выполнении lst не указывает ни на что?
- Что на самом деле происходит внутри этого вызова функции append_if_even(2)?
x
иlst
не являются глобальными. Таким образом, их установка не влияет на второй вызов. - person Willem Van Onsem   schedule 06.04.2017None
. Но скажем, вы указалиlst = []
. Он создаст один список. Если вы не укажетеlst
,lst
будет ссылаться на этот список. В противном случае к данному аргументу. Но установка самого параметра не имеет значения. - person Willem Van Onsem   schedule 06.04.2017