PYTHON_JOB_INTERVIEW Telegram 1144
🐍 Python-задача с подвохом: что напечатает код?


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)


Варианты ответа:
1️⃣ list1 = [10], list2 = [123], list3 = ['a']
2️⃣ list1 = [10], list2 = [123], list3 = [10, 'a']
3️⃣ list1 = [10, 'a'], list2 = [123], list3 = [10, 'a']
4️⃣ list1 = [10, 'a'], list2 = [123], list3 = ['a']

---

💡 Подсказка:
Если вы используете изменяемый объект (например, список) как значение по умолчанию в аргументе функции — он сохраняется между вызовами.

---

Ответ:
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']

🔎 Почему?
👉 Значение по умолчанию lst=[] создаётся один раз — при определении функции.
👉 Когда вызываем extend_list(10), значение 10 добавляется в этот общий список.
👉 Когда вызываем extend_list(123, []), передаём новый список, всё ок.
👉 Когда вызываем extend_list('a'), снова используется общий список из первого вызова.

Чтобы избежать этой ловушки:


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


🚀 Запомни: никогда не используй изменяемые объекты как значения по умолчанию для аргументов функции!

@python_job_interview
8



tgoop.com/python_job_interview/1144
Create:
Last Update:

🐍 Python-задача с подвохом: что напечатает код?


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)


Варианты ответа:
1️⃣ list1 = [10], list2 = [123], list3 = ['a']
2️⃣ list1 = [10], list2 = [123], list3 = [10, 'a']
3️⃣ list1 = [10, 'a'], list2 = [123], list3 = [10, 'a']
4️⃣ list1 = [10, 'a'], list2 = [123], list3 = ['a']

---

💡 Подсказка:
Если вы используете изменяемый объект (например, список) как значение по умолчанию в аргументе функции — он сохраняется между вызовами.

---

Ответ:
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']

🔎 Почему?
👉 Значение по умолчанию lst=[] создаётся один раз — при определении функции.
👉 Когда вызываем extend_list(10), значение 10 добавляется в этот общий список.
👉 Когда вызываем extend_list(123, []), передаём новый список, всё ок.
👉 Когда вызываем extend_list('a'), снова используется общий список из первого вызова.

Чтобы избежать этой ловушки:


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


🚀 Запомни: никогда не используй изменяемые объекты как значения по умолчанию для аргументов функции!

@python_job_interview

BY Python вопросы с собеседований


Share with your friend now:
tgoop.com/python_job_interview/1144

View MORE
Open in Telegram


Telegram News

Date: |

As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020.
from us


Telegram Python вопросы с собеседований
FROM American