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