我试图创建一个python内置类型对象列表,如[{},(),[],'',0 .....]可以是不带参数调用
我不确定如何撰写理解。我有以下代码
[getattr(___builtins___,x)() for x in dir(___builtins___)]
某些元素不可调用,有些元素采用参数,因此上述内容无效
答案 0 :(得分:2)
正如g.d.d.c在评论中暗示的那样,这可能是X-Y problem。但是如果你只是为了好玩而做,那就不要使用列表理解。编写一个处理异常的生成器:
def no_arg_builtins():
for builtin in dir(__builtins__):
o = getattr(__builtins__, builtin)
if callable(o):
try:
yield o()
except TypeError:
pass # Called incorrectly
else:
pass # not callable
或者,如果您只想要内置类型的列表,请考虑使用types module,或过滤内置类型的类型'类型:
(t for t in dir(__builtins__) if type(getattr(__builtins__, t)) == type([].__class__))
最后,您可以使用inspect.getargspec
来确定有关可调用的arity的具体信息。