Форум сайта python.su
1
Почему в Python есть возможность изменять объекты в функциях на глобальном уровне?
def one(): l = [1] print 'one', l def two(l): l[0] += 1 print 'two', l two(l) print 'one+1', l one()
Отредактировано kampella (Авг. 11, 2015 18:55:42)
Офлайн
103
doc
смотреть в сторону immutable и mutable
Офлайн
568
А почему её не должно быть?
Офлайн
1
FishHook
А почему её не должно быть?
Офлайн
88
kampellaА как должно работать это
Ну а какже границы области видимости и все такое?
def a(): pass def b(): a() b()
Офлайн
1
ShamanТолько присваивание определяет локальную переменную, так?
Офлайн
857
Походу, какая-то проблема с пониманием аргументов функции.
>>> def one(): ... l = [1] ... print 'one', l ... def two(l): ... l.append(2) ... print 'two', l ... two([0]) ... print 'one+1', l ... >>> one() one [1] two [0, 2] one+1 [1] >>>
Офлайн
1
py.user.next
Походу, какая-то проблема с пониманием аргументов функции.
Офлайн
857
kampellaНу, как спросил. Сам же передаёшь список в функцию, а потом спрашиваешь, почему она его меняет.
Вы не поняли вопроса.
Офлайн
1
py.user.next
def two(l): l += 1 print ‘two’, l
Офлайн