Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 局部作用域中的变量列表_Python_Namespaces - Fatal编程技术网

Python 局部作用域中的变量列表

Python 局部作用域中的变量列表,python,namespaces,Python,Namespaces,在python中,dir显示名称空间中定义的所有名称。我检查了一下,效果很好。 但是当我使用dir(function\u name)时,它没有显示我在函数中创建的变量。为什么? 下面是一个代码示例: >>> def printHello(greetings): ... inside_func=2 ... >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'printHel

在python中,dir显示名称空间中定义的所有名称。我检查了一下,效果很好。 但是当我使用
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())