Skip to main content
 首页 » 编程设计

python之使用列表理解检查 __builtins__ 是否可调用,避免 eval(print) 错误

2025年05月04日41cyq1162

我想检查 __builtins__ 中列出的那些是否从 callable 返回 True(作为测试它们是否为函数的方法或不)。我希望返回 those 的列表Python 文档中的函数。我意识到其他项目,例如 AttributeError 为 callable 返回 True,这很好。

以下在我调用它时返回一个SyntaxError(由于eval(print)):

[callable(eval(x)) for x in dir(__builtins__)] 
SyntaxError: unexpected EOF while parsing 

我如何测试 __builtins__ 中的哪些函数是可调用函数,同时回避 eval(print) 抛出的错误?

请您参考如下方法:

您应该使用 getattr 而不是 eval:

builtins = map(lambda obj: getattr(__builtins__, obj), dir(__builtins__))  

然后您可以过滤可调用项的结果:

filter(callable, builtins)  

请注意,也可以使用 inspect.getmembers .它甚至允许使用可选参数来过滤结果:

inspect.getmembers(__builtins__, callable)