Python: создать область видимости
От: Roman Odaisky Украина  
Дата: 03.01.13 16:22
Оценка: -1
Как в Питоне по-человечески отделить часть кода в отдельную область видимости?

Хочу:
namespace grammar:
    P = pyparsing

    comma_or_whitespace = P.White() | ","

    def seq(expr):
        return P.ZeroOrMore(expr + comma_or_whitespace.suppress()) + expr

    number = ...
    numbers = seq(number)

    ...

grammar.whatever.parseString(...)


Можно было бы написать class grammar, но тогда функции не будут видеть ранее определенные идентификаторы.

Пока придумал только такой хак:

def namespace(function):
    return type("NS", (), function())

@namespace
def grammar():
    ...
    return locals()

а по-человечески?
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.