Это нормальное поведение? То есть изменения сделанные внутри метода недоступны снаружи.
bialix
Окт. 21, 2007 22:13:20
да
Pelmen
Окт. 22, 2007 13:30:04
хотелось бы понять почему
саму проблему решил возвращая необходимый результат
bialix
Окт. 22, 2007 14:14:27
что именно почему?
Pelmen
Окт. 22, 2007 14:27:07
так работает ведь если я изменяю параметр в функции, переданный не через словарь, то он меняется по ссылке
Андрей Светлов
Окт. 22, 2007 14:28:41
А потому что в Питоне все параметры передаются по значению. И это - официальная фича. Если хочешь что-то вернуть - пиши это в return. Не зря же можно возвращать tuple :)
j2a
Окт. 22, 2007 14:52:05
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
Окт. 22, 2007 19:01:31
Андрей Светлов 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.