2013-12-18 26 views
1

我想把Python中所有内置函数列表的典型例子放在一起。文档很好,但我想用一个可证明的方法来证明它。如何获得Python中所有内置函数的列表?

在这里,我基本上将内置函数定义为默认名称空间的成员,这些名称空间可用并与用于模块的函数的风格特征保持一致,即:它们提供了一些有用的功能并以小写字母开头。

我在这里做的事情的好处是我展示了列表解析的过滤部分,但它似乎有点肮脏的黑客,并且应该有一个更直接的方法来做到这一点。下面是我在做什么至今:

import string 
alc = string.ascii_lowercase 
bif = [i for i in dir(__builtins__) if 
     any(i.startswith(j) for j in alc)] 

这给了我:

[ '绝', '所有', '任何', '申请', '即basestring', '本' ,'bool','buffer', 'bytearray','bytes','callable','chr','classmethod','cmp', 'coerce','compile','complex','copyright' 'dict','dir','divmod','enumerate','eval','execfile','exit', 'file','filter','float' ,'format','frozenset','getattr', 'globals','hasattr','hash','help','hex','id','input','int', 'intern','isinstance','issubclass','iter','len','license', 'list','locals','long','map','max','memoryview', 'min','next', 'object','oct','open','ord','pow','print','property','quit', 'range','raw_input',' 'reduce','reload','repr','reversed','round', 'set','setattr','slice','sorted','staticmethod','str','sum' “超级”,“元组”,“型”,“unichr”,“统一”,“乏”,“x范围”, “拉链”]

我相信他们都是调用,与此:

bi2 = [i for i in dir(__builtins__) if 
     any(i.startswith(j) for j in alc) 
     and callable(getattr(__builtins__, i, None))] 
set(bif).symmetric_difference(bi2) 

我得到:

set([]) 

那么,有没有更好的方式来列出内置Python函数?到目前为止,谷歌和stackoverflow搜索已经失败了。

我正在寻找一种可证明且可重复的实验指导方法。谢谢!

+1

为什么你需要在Python中列出它们,而不是只查看[documentation](http://docs.python.org/2/library/functions.html)? – BrenBarn

+0

我正在演示一种规范的方法来回答有多少内置函数存在的问题,以及如何跟踪它们以确定我是否知道它们。 –

+0

@AaronHall:听起来好像你想要文档中的列表,然后。这是一项人工任务,而不是编码任务。 – user2357112

回答

5
import __builtin__ 
import inspect 

[name for name, function in sorted(vars(__builtin__).items()) 
if inspect.isbuiltin(function) or inspect.isfunction(function)] 

还有documentation中的列表。

+0

差异'>>> __builtin__ = __builtins__ >>> bi4 = [名称,函数在排序(vars(__ builtin __)。items()) ... if inspect.isbuiltin(function)或inspect.isfunction(function )] >>> set(bif)。symmetric_difference(bi4) set(['bytearray','enumerate','set','help','int','__import__','float','unicode','memoryview','bool','quit '''basestring','slice','complex','long','xrange','tuple','exit','type','file','bytes','buffer','reversed', 'dict','credits','frozenset','super','copyright','license','classmethod','list','staticmethod','str','property'])'' –

+0

@AaronHall:其中一些是类型。例如,“list”和“int”。其他则是版权声明。 '__import__'出现在我的列表中,但不是你的;这是一个内置功能。如果你希望所有的东西都可以调用,那只是一个简单的改变,尽管它会把例外放回列表中。 – user2357112

+0

嗯,努力+1,但是当我的列表错过了dunder导入(有趣的是,我最近使用过),它获得了人们在使用Python时应该知道的命名空间中的所有其他可调用项。对我来说,重要的是对Python的新用户有指导意义。 –

相关问题