生成可以不带参数调用的python构建对象列表

时间:2014-09-10 03:14:00

标签: python

我试图创建一个python内置类型对象列表,如[{},(),[],'',0 .....]可以是不带参数调用

我不确定如何撰写理解。我有以下代码

[getattr(___builtins___,x)() for x in dir(___builtins___)]

某些元素不可调用,有些元素采用参数,因此上述内容无效

1 个答案:

答案 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的具体信息。