PYTHONL Telegram 4956
🖥 Что выведет код ниже?


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

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


🤯 Подвох
Многие думают, что каждый вызов append_to_list() создаёт новый список, и ожидают вывод:


[1]
[2]
[3]

Но на самом деле Python выведет:


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

🧠 Почему так происходит?
В Python значения аргументов по умолчанию вычисляются один раз — при определении функции, а не при каждом вызове.

Значение my_list=[] создаётся один раз и сохраняется между вызовами. Это работает как статическая переменная внутри функции.

Как это исправить?
Используй None как значение по умолчанию:


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

print(append_to_list(1)) # [1]
print(append_to_list(2)) # [2]
print(append_to_list(3)) # [3]

💡 Вывод
Не используйте изменяемые объекты (например, list, dict, set) как значения по умолчанию для аргументов функций в Python.


@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
23👍10🔥9😁2😱2



tgoop.com/pythonl/4956
Create:
Last Update:

🖥 Что выведет код ниже?


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

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


🤯 Подвох
Многие думают, что каждый вызов append_to_list() создаёт новый список, и ожидают вывод:


[1]
[2]
[3]

Но на самом деле Python выведет:


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

🧠 Почему так происходит?
В Python значения аргументов по умолчанию вычисляются один раз — при определении функции, а не при каждом вызове.

Значение my_list=[] создаётся один раз и сохраняется между вызовами. Это работает как статическая переменная внутри функции.

Как это исправить?
Используй None как значение по умолчанию:


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

print(append_to_list(1)) # [1]
print(append_to_list(2)) # [2]
print(append_to_list(3)) # [3]

💡 Вывод
Не используйте изменяемые объекты (например, list, dict, set) как значения по умолчанию для аргументов функций в Python.


@pythonl

BY Python/ django




Share with your friend now:
tgoop.com/pythonl/4956

View MORE
Open in Telegram


Telegram News

Date: |

Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. How to create a business channel on Telegram? (Tutorial) The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations.
from us


Telegram Python/ django
FROM American