Найти - Пользователи
Полная версия: Конструкция **kwarg, параметры передаются по значению?
Начало » Python для экспертов » Конструкция **kwarg, параметры передаются по значению?
1
Pelmen
Это нормальное поведение?
То есть изменения сделанные внутри метода недоступны снаружи.
bialix
да
Pelmen
хотелось бы понять почему

саму проблему решил возвращая необходимый результат
bialix
что именно почему?
Pelmen
так работает
ведь если я изменяю параметр в функции, переданный не через словарь, то он меняется по ссылке
Андрей Светлов
А потому что в Питоне все параметры передаются по значению. И это - официальная фича. Если хочешь что-то вернуть - пиши это в return. Не зря же можно возвращать tuple :)
j2a
Pelmen
так работает
ведь если я изменяю параметр в функции, переданный не через словарь, то он меняется по ссылке
>>> def f(arg, **kwargs):
…: for a in arg, kwargs:
…: a.append('tail')
…:
…:

>>> l1 =

>>> l2 =

>>> f(l1, key=l2)

>>> l1
<<<

>>> l2
<<<


всё передается по ссылке, просто immutable объекты ты не поменяешь

P.S. Андрей Светлов прав, лучше явно возвращать ч/з return
Pelmen
Андрей Светлов
j2a
спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB