內建函數和方法(built-infunctionsandmethods)
根據定義,內建的(built-in)模塊是指使用C寫的模塊,可以通過sys模塊的builtin_module_names字段查看都有哪些模塊是內建的。這些模塊中的函數和方法可以使用的屬性比較少,不過一般也不需要在代碼中查看它們的信息。
__doc__:函數或方法的文檔。
__name__:函數或方法定義時的名字。
__self__:僅方法可用,如果是綁定的(bound),則指向調用該方法的類(如果是類方法)或實例(如果是實例方法),否則為None。
*__module__:函數或方法所在的模塊名。
函數(function)
這里特指非內建的函數。注意,在類中使用def定義的是方法,方法與函數雖然有相似的行為,但它們是不同的概念。
__doc__:函數的文檔;另外也可以用屬性名func_doc。
__name__:函數定義時的函數名;另外也可以用屬性名func_name。
*__module__:包含該函數定義的模塊名;同樣注意,是模塊名而不是模塊對象。
*__dict__:函數的可用屬性;另外也可以用屬性名func_dict。
不要忘了函數也是對象,可以使用函數.屬性名訪問屬性(賦值時如果屬性不存在將新增一個),或使用內置函數has/get/setattr()訪問。不過,在函數中保存屬性的意義并不大。
func_defaults:這個屬性保存了函數的參數默認值元組;因為默認值總是靠后的參數才有,所以不使用字典的形式也是可以與參數對應上的。
func_code:這個屬性指向一個該函數對應的code對象,code對象中定義了其他的一些特殊屬性,將在下文中另外介紹。
func_globals:這個屬性指向定義函數時的全局命名空間。
*func_closure:這個屬性僅當函數是一個閉包時有效,指向一個保存了所引用到的外部函數的變量cell的元組,如果該函數不是一個內部函數,則始終為None。這個屬性也是只讀的。
下面的代碼演示了func_closure:
#coding:UTF-8
deffoo():
n=1
defbar():
printn#引用非全局的外部變量n,構造一個閉包
n=2
returnbar
closure=foo()
printclosure.func_closure
#使用dir()得知cell對象有一個cell_contents屬性可以獲得值
printclosure.func_closure[0].cell_contents#2
由這個例子可以看到,遇到未知的對象使用dir()是一個很好的主意:)
以上內容為大家介紹了python之內建函數的方法,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.mycheba.com/