我想检查 __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)
