PYTHON_JOB_INTERVIEW Telegram 1159
🧠 Хитрая задача по Python — *ловушка с изменяемыми значениями по умолчанию*

Вопрос:
Что выведет следующий код?


def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list

print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))


Ваш ответ? 🤔

Многие ожидают:


[1]
[2]
[3]


Но фактически вывод будет:

python 
[1]
[1, 2]
[1, 2, 3]


🔍 Почему так происходит?

Параметр my_list=[] создаётся один раз — при определении функции. И он сохраняется между вызовами. То есть все вызовы функции используют один и тот же список по умолчанию.

Это одна из самых частых ошибок в продакшене.

Правильный способ — использовать None как значение по умолчанию:



def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list

Теперь:


[1]
[2]
[3]

Каждый вызов получает новый список.

⚠️ Если вы работаете с функциями, которые принимают списки или словари — всегда проверяйте, не мутируется ли значение между вызовами.
👍164🔥2



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

🧠 Хитрая задача по Python — *ловушка с изменяемыми значениями по умолчанию*

Вопрос:
Что выведет следующий код?


def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list

print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))


Ваш ответ? 🤔

Многие ожидают:


[1]
[2]
[3]


Но фактически вывод будет:

python 
[1]
[1, 2]
[1, 2, 3]


🔍 Почему так происходит?

Параметр my_list=[] создаётся один раз — при определении функции. И он сохраняется между вызовами. То есть все вызовы функции используют один и тот же список по умолчанию.

Это одна из самых частых ошибок в продакшене.

Правильный способ — использовать None как значение по умолчанию:



def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list

Теперь:


[1]
[2]
[3]

Каждый вызов получает новый список.

⚠️ Если вы работаете с функциями, которые принимают списки или словари — всегда проверяйте, не мутируется ли значение между вызовами.

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


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

View MORE
Open in Telegram


Telegram News

Date: |

The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. Telegram channels fall into two types: “[The defendant] could not shift his criminal liability,” Hui said. 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.”
from us


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