我正在尝试创建一个python内置类型对象列表,如[{},(),[],'',0…..],这些对象可以在没有参数的情况下调用
我不知道该怎么写理解。我有以下代码
[getattr(___builtins___,x)() for x in dir(___builtins___)]
某些元素是不可调用的,有些元素采用参数,因此上面的内容不适用于
正如g.d.d.c在评论中所暗示的,这可能是一个X-Y问题。但如果你只是为了好玩,不要使用列表理解。编写一个处理异常的生成器:
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
或者,如果你只想要一个内置类型的列表,可以考虑使用类型模块,或者过滤内置是"类型"类型的地方:
(t for t in dir(__builtins__) if type(getattr(__builtins__, t)) == type([].__class__))
最后,您可以使用inspect.getargspec
来确定关于可调用的arity的具体内容。