Соглашение об объявлении переменных в Python, когда это требуется для области видимости? - PullRequest
0 голосов
/ 18 ноября 2011

Возьмите этот пример:

def f():
    myvar = None
    def g():
        print myvar

    ...
    myvar = get_real_value()
    g()

Является ли "myvar = None" обычным (или, по крайней мере, разумным) способом объявления переменной, чтобы сделать ее видимой для g ()? Есть ли способ лучше? (Python 2.6.x, если необходимо)

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Нет необходимости объявлять переменную перед определением для g():

>>> def f():
...     def g():
...         print myvar
...     myvar = 1
...     g()
... 
>>> f()
1

Однако, если вы можете избежать ссылки на нелокальные переменные в g(), это было бы предпочтительным, что вывероятно, здесь можно сделать, если myvar будет параметром g().

1 голос
/ 18 ноября 2011

Вам не нужно предварительно инициализировать переменную;его нужно только инициализировать перед вызовом g().Просто удалите строку myvar = None.

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

...