Python中dir()和locals()之间有什么区别吗?
根据Python文档,Python中dir()和locals()之间有什么区别吗?,python,Python,根据Python文档,dir()。第一个返回名称列表,第二个返回名称-值对字典。这是唯一的区别吗?这总是有效的吗 assert dir() == sorted( locals().keys() ) 无参数调用时,dir()的输出几乎与locals()相同,但dir()返回字符串列表,而locals()返回字典,您可以更新该字典以添加新变量 dir(…) dir([object])->字符串列表 如果在没有参数的情况下调用,则返回当前作用域中的名称。 本地人(…) 局部变量()->字典 更新并返
dir()。第一个返回名称列表,第二个返回名称-值对字典。这是唯一的区别吗?这总是有效的吗
assert dir() == sorted( locals().keys() )
无参数调用时,dir()
的输出几乎与locals()
相同,但dir()
返回字符串列表,而locals()
返回字典,您可以更新该字典以添加新变量
dir(…)
dir([object])->字符串列表
如果在没有参数的情况下调用,则返回当前作用域中的名称。
本地人(…)
局部变量()->字典
更新并返回包含当前作用域的局部变量的字典。
类型:
但是,使用dir()
,这不起作用:
In [7]: dir()[-2]
Out[7]: 'a'
In [8]: dir()[-2]=10
In [9]: dir()[-2]
Out[9]: 'a'
In [10]: a
Out[10]: 2
确切的问题是“使用什么函数来检查某个变量是否在局部范围内定义”
访问Python中未定义的变量会引发异常:
>>> undefined
NameError: name 'undefined' is not defined
就像任何其他异常一样,您可以捕获它:
try:
might_exist
except NameError:
# Variable does not exist
else:
# Variable does exist
我需要了解语言体系结构才能编写更好的代码
这不会使你的代码更好。永远不要让自己陷入需要这样做的情况,这几乎总是错误的方法。由于Python优化对函数中局部变量的访问的方式,通常不可能使用locals()
字典更改局部变量,这就是为什么文档警告它的原因。
>>> undefined
NameError: name 'undefined' is not defined
try:
might_exist
except NameError:
# Variable does not exist
else:
# Variable does exist