gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:16 25 4
gpt4 key购买 nike

我想检查 __builtins__ 中列出的那些是否从 callable 返回 True(作为测试它们是否为函数的方法或不)。我希望返回 those 的列表Python 文档中的函数。我意识到其他项目,例如 AttributeErrorcallable 返回 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)

关于python - 使用列表理解检查 __builtins__ 是否可调用,避免 eval(print) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com