Вывод списка встроенных функций и методов (Python) - PullRequest
3 голосов
/ 20 июля 2009

Я придумал это:

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

Я знаю, это ужасно. Можете ли вы показать мне лучший / более питонский способ сделать это?

Ответы [ 2 ]

6 голосов
/ 20 июля 2009

Есть модуль inspect :

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)
2 голосов
/ 20 июля 2009

Вот вариант без 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)]
...