Forwarded from Python Ментор
Наткнулся на не баг а фичу Пайдентика.

Все мы с младенчества привыкли, что такой вот код работает вот так:

my_list = [1,2,3]

def append_to_list(l: list[int]) -> None:
l.append(4)
l.append(5)
l.append(6)

append_to_list(my_list)
print(my_list) # [1, 2, 3, 4, 5, 6]


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

но если теперь нам надо валидировать передаваемые в функцию значения, и если мы хотим воспользоваться стильным модным молодежным пайдентиком вот так:

from pydantic import validate_call

my_list = [1,2,3]

@validate_call
def append_to_list(l: list[int]) -> None:
l.append(4)
l.append(5)
l.append(6)

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


то фига нам лысого, а не мутацию списка))
2025/07/01 01:44:48
Back to Top
HTML Embed Code: