列出内置函数和方法(Python)

时间:2009-07-20 13:47:58

标签: python module introspection inspect

我想出了这个:

[a for a in dir(__builtins__) if str(type(getattr(__builtins__,a))) == "<type 'builtin_function_or_method'>"]

我知道它的丑陋。你能告诉我一个更好/更pythonic的方式吗?

2 个答案:

答案 0 :(得分:6)

inspect module

import inspect

filter(inspect.isbuiltin, (member for name, member in inspect.getmembers(__builtins__)))

编辑:更仔细地阅读文档,我想出了这个不使用__getattr__

的变体
import inspect

members = (member for name, member in inspect.getmembers(__builtins__))
filter(inspect.isbuiltin, members)

答案 1 :(得分:2)

这是一个没有getattr的变体:

import inspect
[n.__name__ for n in __builtins__.__dict__.values() if inspect.isbuiltin(n)]

如果你想要实际的函数指针:

import inspect
[n for n in __builtins__.__dict__.values() if inspect.isbuiltin(n)]