2015-01-13 3 views
3

Python имеет приятную функцию, которая дает содержимое объекта, как и все его методы и существующие переменные, называемые dir(). Однако, когда dir вызывается в функции, он смотрит только на область действия функции. Таким образом, вызов dir() в функции имеет другое значение, чем вызов его за пределами одного. Например:dir inside function

dir() 
> ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__'] 
def d(): 
    return dir() 
d() 
> [] 

Есть ли способ изменить область действия в d?

ответ

7

dir()без аргумента по умолчанию в текущей области (ключей locals(), но отсортированы). Если вам нужна другая область, вам нужно будет передать объект. От documentation:

Без аргументов верните список имен в текущей локальной области. С аргументом попытайтесь вернуть список допустимых атрибутов для этого объекта.

Для глобальной сферы применения используйте sorted(globals()); это тот же самый результат, что и вызов dir() на уровне модуля.

Смежные вопросы