Python 3.3+inspectфункция
inspect.getclosurevars()
классы и функции
Показывает, на какие внешние имена ссылается функция: замыкание, глобальные, встроенные и неразрешённые — именованным кортежем ClosureVars.
Синтаксис
inspect.getclosurevars(func)
Значения берутся на момент вызова getclosurevars, а не на момент определения функции. В unbound попадают не только опечатки: функция смотрит на все имена кода, и имя атрибута (x.real) окажется там же, хотя ошибки нет. Порядок в unbound — порядок множества, сортируйте перед выводом. Для встроенных функций — TypeError.
Примеры
import inspect
rate = 2
def make(k):
def f(x):
return x.real * k * rate + len([]) + undefined_name
return f
cv = inspect.getclosurevars(make(3))
print(cv.nonlocals, cv.globals) # → {'k': 3} {'rate': 2}
print(list(cv.builtins), sorted(cv.unbound)) # → ['len'] ['real', 'undefined_name']
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности