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

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



tgoop.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:
tgoop.com/Python_Community_ru/2589

View MORE
Open in Telegram


Telegram News

Date: |

Users are more open to new information on workdays rather than weekends. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.” On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." Each account can create up to 10 public channels How to Create a Private or Public Channel on Telegram?
from us


Telegram Python Community
FROM American