Python 局部作用域中的变量列表
在python中,dir显示名称空间中定义的所有名称。我检查了一下,效果很好。 但是当我使用Python 局部作用域中的变量列表,python,namespaces,Python,Namespaces,在python中,dir显示名称空间中定义的所有名称。我检查了一下,效果很好。 但是当我使用dir(function\u name)时,它没有显示我在函数中创建的变量。为什么? 下面是一个代码示例: >>> def printHello(greetings): ... inside_func=2 ... >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'printHel
dir(function\u name)
时,它没有显示我在函数中创建的变量。为什么?
下面是一个代码示例:
>>> def printHello(greetings):
... inside_func=2
...
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'printHello',]
>>> dir(printHello)
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
至于为什么dir(youfunc)
没有列出本地变量,这很简单,因为正如所记录的dir(obj)
列出了obj
的属性,而本地变量不是函数对象的属性
在函数本身之外,您可以使用yourfunc.func\u code.co\u varnames
(注意,参数是局部变量)获取函数的局部变量名列表:
但是您显然无法从函数外部访问本地vars值,因为这些值仅在函数执行时存在
在函数中,您可以使用locals()
获取本地变量:
打开一本书要比在开发生命的早期问一个问题要好…从文档:“
dir([object])
不带参数,返回当前本地作用域中的名称列表。带参数,尝试返回该对象的有效属性列表。”使用代码块来显示代码而不是屏幕截图,请看一看,因为函数中的局部变量不是函数对象的属性。而且你从来没有调用过这个函数,所以它根本就不存在。你试过了吗?
def foo(bar):
baaz = 42
print(foo.func_code.co_varnames)
def foo(bar):
baaz = 42
print(locals())