我想出了这个:
[a for a in dir(__builtins__) if str(type(getattr(__builtins__,a))) == "<type 'builtin_function_or_method'>"]
我知道它丑陋。你能告诉我一个更好/更pythonic的方式吗?
我想出了这个:
[a for a in dir(__builtins__) if str(type(getattr(__builtins__,a))) == "<type 'builtin_function_or_method'>"]
我知道它丑陋。你能告诉我一个更好/更pythonic的方式吗?
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)
这是一个没有 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)]