生成一个python内置程序的对象列表,这些对象可以在没有参数的情况下调用



我正在尝试创建一个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的具体内容。

相关内容

  • 没有找到相关文章

最新更新