函數(shù)也是一個(gè)對(duì)象,有句話是:python 一切皆對(duì)象。
創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元新沂做網(wǎng)站,已為上家服務(wù),為新沂各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
index.provide_automatic_options = False
就是給index對(duì)象設(shè)置一個(gè)屬性
當(dāng)函數(shù)要接受元組或者字典參數(shù)時(shí),它分別使用 * 和 ** 前綴。
在變量前 加 ,則輸入的函數(shù)參數(shù)會(huì)作為一個(gè)元組存在args中, 多余的參數(shù) *也會(huì)存在args中,如:
如果使用******前綴,輸入的參數(shù)會(huì)被存放在字典中, 多余的參數(shù) 也會(huì)存在kwargs中,kwargs為一個(gè)字典
每一個(gè)module都有一個(gè)叫__name__的變量,它的值就是module的名字
比如os.__name__ 是"os",sys模塊的__name__是"sys"
__main__也是一個(gè)模塊,但是這個(gè)模塊比較特殊,其他的模塊都有一個(gè)對(duì)應(yīng)的同名py文件,比如os.py, sys.py,這個(gè)模塊卻沒(méi)有對(duì)應(yīng)的固定名字的py文件,不管你執(zhí)行 什么.py,它的名字都是__main__。它指的是正在運(yùn)行的模塊,即主模塊。
上面說(shuō)過(guò),每個(gè)模塊都有__name__這個(gè)變量, 那么主模塊也不例外,主模塊的__name__變量,值就是"__main__"
解釋了半天,再說(shuō)你的問(wèn)題:__name__和name是兩個(gè)不同的變量,__name__有定義而name沒(méi)有定義,使用沒(méi)有定義的變量就要出錯(cuò),這沒(méi)有什么好說(shuō)的。
例如你寫(xiě):
if name == '__main__':是一個(gè)變量未定義的錯(cuò)誤
而當(dāng)你寫(xiě) if __name__ == 'main':的時(shí)候,由于__name__的值其實(shí)是'__main__',所以if的條件為假,不會(huì)執(zhí)行你的代碼。
最后,你可以自己寫(xiě)一點(diǎn)測(cè)試代碼來(lái)探索這個(gè)問(wèn)題,文件名就叫test.py,代碼也很簡(jiǎn)單:
print(__name__)
import?test
輸出有兩行,第一行毫無(wú)疑問(wèn)是__main__,第二行比較有意思,輸出是test,因?yàn)榇藭r(shí)test.py作為一個(gè)模塊被import其__name__就是"test"。
self是對(duì)實(shí)例自己的引用。
self.a()的意思是"調(diào)用自己的過(guò)程a"。
試想,有定義一個(gè)函數(shù)a,同時(shí),類中也有過(guò)程a,要區(qū)分兩者,在類中就要通過(guò)是否使用self前綴來(lái)區(qū)分,在外部就要通過(guò)是否有實(shí)例名來(lái)區(qū)分。
參考以下代碼: