Skip to main content
 首页 » 编程设计

python之如何查看 "hidden"python 内置

2025年05月04日13jackei

一些 python 内置方法(例如 vars)被一些相同的局部变量名“隐藏”。如何调用“隐藏”的内置方法?

我在 Debug模式下使用 python -m pdb XXX.py,在 中看不到隐藏的内置方法 (vars) __builtins__ 字典: (Pdb) 目录 (__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> 

请注意,这是一个hack,前导和尾随的 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,列表)。经验告诉我,迟早你会感到困惑,并且会导致难以调试的错误,所以只说“不”;-)

您可以使用 dir() 函数获取所有这些内置函数的完整列表:

>>> dir(__builtins__)