Telegram Group & Telegram Channel
🖥 Задача (с подвохом). Какой результат выдаст этот код?

def extend_list(val, lst=[]):
lst.append(val)
return lst

# Первый вызов: используется список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используется список по умолчанию
list3 = extend_list('a')

print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)

🧩 Объяснение

Как работает список по умолчанию
В объявлении функции lst=[] создаётся один список при определении функции, и он используется повторно во всех вызовах, где аргумент lst не передан.

Первый вызов

list1 = extend_list(10)
Параметр lst не передан → используется дефолтный список.

Добавляем 10.
В результате list1 становится [10].

Второй вызов

list2 = extend_list(123, [])
Передаём новый пустой список [].

В этот список добавляется 123.
В итоге list2 становится [123].

Третий вызов

list3 = extend_list('a')
Опять не передан lst → используется тот же дефолтный список, в который уже добавлен 10.

Добавляем 'a'.
Дефолтный список теперь [10, 'a'], и list3 ссылается на этот же список.

Окончательный вывод программы:

list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']

Обратите внимание, что list1 и list3 — это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.

@Python_Community_ru



tg-me.com/Python_Community_ru/2589
Create:
Last Update:

🖥 Задача (с подвохом). Какой результат выдаст этот код?

def extend_list(val, lst=[]):
lst.append(val)
return lst

# Первый вызов: используется список по умолчанию
list1 = extend_list(10)
# Второй вызов: передаём новый пустой список
list2 = extend_list(123, [])
# Третий вызов: снова используется список по умолчанию
list3 = extend_list('a')

print('list1 =', list1)
print('list2 =', list2)
print('list3 =', list3)

🧩 Объяснение

Как работает список по умолчанию
В объявлении функции lst=[] создаётся один список при определении функции, и он используется повторно во всех вызовах, где аргумент lst не передан.

Первый вызов

list1 = extend_list(10)
Параметр lst не передан → используется дефолтный список.

Добавляем 10.
В результате list1 становится [10].

Второй вызов

list2 = extend_list(123, [])
Передаём новый пустой список [].

В этот список добавляется 123.
В итоге list2 становится [123].

Третий вызов

list3 = extend_list('a')
Опять не передан lst → используется тот же дефолтный список, в который уже добавлен 10.

Добавляем 'a'.
Дефолтный список теперь [10, 'a'], и list3 ссылается на этот же список.

Окончательный вывод программы:

list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']

Обратите внимание, что list1 и list3 — это один и тот же дефолтный список, поэтому изменения сохраняются между вызовами.

@Python_Community_ru

BY Python Community




Share with your friend now:
tg-me.com/Python_Community_ru/2589

View MORE
Open in Telegram


Python Community Telegram | DID YOU KNOW?

Date: |

Telegram is riding high, adding tens of million of users this year. Now the bill is coming due.Telegram is one of the few significant social-media challengers to Facebook Inc., FB -1.90% on a trajectory toward one billion users active each month by the end of 2022, up from roughly 550 million today.

Importantly, that investor viewpoint is not new. It cycles in when conditions are right (and vice versa). It also brings the ineffective warnings of an overpriced market with it.Looking toward a good 2022 stock market, there is no apparent reason to expect these issues to change.

Python Community from us


Telegram Python Community
FROM USA