如何查看内置的“隐藏”python?
某些python内置方法(例如vars)被某些相同的本地变量名称“隐藏”。如何调用“隐藏”内置方法?如何查看内置的“隐藏”python?
我是在调试模式下使用python -m pdb XXX.py
,并不能看到__builtins__
字典隐藏内置方法(vars
): (Pdb) dir(__builtins__) ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']
您可以使用特殊__builtins__
模块:
>>> __builtins__.vars
<built-in function vars>
>>> __builtins__.vars()
..ouput snipped..
如果您使用Python调试器(python -m pdb script.py
),__builtins__
似乎显示为dict
,那么请使用:
(Pdb) __builtins__['vars']
<built-in function vars>
注意,这是一个破解,2领先&尾随下划线的是Python的约定“内部使用,不要在脚本中不能使用”。 Python可以让你访问这个,但是这个巨大的力量带来了巨大的责任,因为它使你能够做到非常聪明,和非常愚蠢的事情!
请记住,在Python函数就像任何其他变量,那么另一种方法是将保存以前vars
功能:
# No parens! We don't want to call the function, just assign it
>>> builtin_vars = vars
>>> vars = 'a string'
>>> builtin_vars
<built-in function vars>
>>> vars
'a string'
然而,迄今为止最好的解决方案是不覆盖这些变量;-)大多数编辑应该突出显示这些变量,因此您可以轻松识别最常被覆盖的变量(vars
,str
,list
)。经验告诉我,你迟早会被混淆,并将导致难以调试的错误,所以才说“NO” ;-)
你可以得到所有这些内置的完整列表插件与dir()
功能:
>>> dir(__builtins__)
我想说['builtins'(https://docs.python.org/3/library/builtins.html)是一个好主意,因为它是'模块有用为对象提供与内置值相同的名称,但也需要内置该名称 – Navith 2015-05-11 05:49:33