2013-12-18 27 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的新用戶有指導意義。 –

相關問題