Найти - Пользователи
Полная версия: Область видимости объектов в фукциях
Начало » Python для новичков » Область видимости объектов в фукциях
1 2
kampella
Почему в Python есть возможность изменять объекты в функциях на глобальном уровне?

def one():
    l = [1]
    print 'one', l
    def two(l):
        l[0] += 1 
        print 'two', l 
    two(l)
    print 'one+1', l 
one()
terabayt
doc
смотреть в сторону immutable и mutable
FishHook
А почему её не должно быть?
kampella
FishHook
А почему её не должно быть?

Ну а какже границы области видимости и все такое?
Shaman
kampella
Ну а какже границы области видимости и все такое?
А как должно работать это
def a():
     pass
 
def b():
     a()
 
b()
?
kampella
Shaman
Только присваивание определяет локальную переменную, так?
py.user.next
Походу, какая-то проблема с пониманием аргументов функции.
>>> 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]
>>>

А именно, человек не знает разницы между формальными аргументами функции и фактическими аргументами функции.
kampella
py.user.next
Походу, какая-то проблема с пониманием аргументов функции.

Вы не поняли вопроса.

Всем спасибо. Буду перечитывать документацию и восполнять пробелы.
py.user.next
kampella
Вы не поняли вопроса.
Ну, как спросил. Сам же передаёшь список в функцию, а потом спрашиваешь, почему она его меняет.
kampella
py.user.next
def two(l): l += 1 print ‘two’, l

Можно и не передавать, список всеравно именится.
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