新聞中心
用 C 族語(yǔ)言(C、C++、Java、C# 等)編寫(xiě)的程序。)需要main()功能來(lái)指示執(zhí)行的起點(diǎn)。

成都創(chuàng)新互聯(lián)公司于2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元睢陽(yáng)做網(wǎng)站,已為上家服務(wù),為睢陽(yáng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
另一方面,在 Python 中,沒(méi)有main()函數(shù)的概念,因?yàn)樗且环N基于解釋器的語(yǔ)言,同樣可以在交互 Shell中使用。 擴(kuò)展名為.py的 Python 程序文件包含多個(gè)語(yǔ)句。Python 程序文件的執(zhí)行從第一條語(yǔ)句開(kāi)始。
Python 包含名為__name__的特殊變量,該變量包含作為字符串執(zhí)行的代碼的范圍。__main__是頂層代碼執(zhí)行的頂層作用域的名稱(chēng)。
例如,解釋器 Shell 中執(zhí)行的代碼的范圍將是__main__,如下所示。
Python Shell
>>>__name__
'__main__'
所有的功能和模塊都將在解釋器 Shell 的頂層范圍__main___內(nèi)執(zhí)行。
Python Shell
>>> def f1():
print(__name__)
>>> f1()
甚至內(nèi)部功能都是在頂層范圍__main__內(nèi)執(zhí)行的:
Python Shell
>>> def f1():
print(__name__)
def f2():
print(__name__)
f2()
>>> f1()
__main__
__main__
一個(gè) Python 文件可以包含多個(gè)可以獨(dú)立執(zhí)行的函數(shù)和語(yǔ)句。例如,考慮以下addition.py:
addition.py
def add(x,y):
z=x+y
print('add() executed under the scope: ', __name__)
return z
x=input('Enter the first number to add: ')
y=input('Enter the secode number to add: ')
result = add(int(x),int(y))
print(x, '+', y,'=', result)
print('Code executed under the scope: ', __name__)
Python 程序文件可以通過(guò)以下方式執(zhí)行:
- 使用命令提示符/終端將 Python 文件作為腳本執(zhí)行。
- 使用 Import 語(yǔ)句將 Python 代碼從一個(gè)文件導(dǎo)入到另一個(gè)文件
C:\Python37> python addition.py
Enter the first number to add: 3
Enter the secode number to add: 3
add() executed under the scope: __main__
3 + 3 = 6
Code executed under the scope: __main__
可以看到,頂層范圍__main__下執(zhí)行的addition.py。
addition.py文件可以作為模塊在另一個(gè)文件中使用,也可以通過(guò)導(dǎo)入在交互 Shell 中使用。
讓我們看看當(dāng)你在交互 Shell 中導(dǎo)入addition模塊時(shí)會(huì)發(fā)生什么。
Python Shell
>>> import addition
Enter the first number to add: 3
Enter the secode number to add: 3
add() executed under the scope: addition
3 + 3 = 6
Code executed under the scope: addition
上面,導(dǎo)入語(yǔ)句從第一條語(yǔ)句開(kāi)始執(zhí)行。但是,我們只想使用add()方法,不想執(zhí)行其他語(yǔ)句。
這里我們可以使用特殊變量__name__來(lái)檢查addition.py文件的作用域和執(zhí)行語(yǔ)句,只有當(dāng)它從命令提示符/終端獨(dú)立執(zhí)行時(shí),而不是當(dāng)它被導(dǎo)入到其他文件/模塊中時(shí)。 重寫(xiě)addition.py,如下圖。
addition.py
def add(x, y):
z=x+y
print('add() executed under the scope: ', __name__)
return z
if __name__ == '__main__':
x=input('Enter the first number to add: ')
y=input('Enter the secode number to add: ')
result = add(int(x),int(y))
print(x, '+', y,'=', result)
print('Code executed under the scope: ', __name__)
以上,if 條件檢查如果范圍是__main__,那么只執(zhí)行接受用戶輸入并添加它們的代碼。
現(xiàn)在,讓我們看看當(dāng)我們?cè)诮换?Shell 中導(dǎo)入上面的addition模塊時(shí)會(huì)發(fā)生什么。
Python Shell
>>> import addition
>>> addition.add(3,3)
add() executed under the scope: addition
6
也可以使用from import語(yǔ)句,如下所示:
Python Shell
>>> from addition import add
>>> add(3,3)
add() executed under the scope: addition
6
如您所見(jiàn),因?yàn)槲覀兪褂昧艘粋€(gè) if 條件來(lái)檢查作用域,所以它在導(dǎo)入addition模塊后不會(huì)執(zhí)行用戶輸入的代碼,因?yàn)樗窃谀K的作用域下執(zhí)行的,也就是addition作用域。 只進(jìn)口add()法。在其他模塊中導(dǎo)入addition模塊也會(huì)發(fā)生同樣的情況。
現(xiàn)在,讓我們看看當(dāng)您從命令提示符/終端執(zhí)行它時(shí)會(huì)發(fā)生什么。
C:\Python37> python addition.py
Enter the first number to add: 3
Enter the secode number to add: 3
add() executed under the scope: __main__
3 + 3 = 6
Code executed under the scope: __main__
可以看到,由于addition.py是在頂級(jí)范圍__main__內(nèi)執(zhí)行的,所以還是執(zhí)行同樣的代碼。
因此,name的值允許 Python 解釋器確定模塊是否是可執(zhí)行腳本。如果其值為main,將執(zhí)行函數(shù)定義之外的語(yǔ)句。如果沒(méi)有,模塊的內(nèi)容將被填充到頂層模塊(或解釋器名稱(chēng)空間)中,而不包含可執(zhí)行部分。
注意:從命令提示符/終端執(zhí)行的 Python 腳本文件將在頂層作用域__main__作用域下執(zhí)行。但是,導(dǎo)入模塊將在模塊自己的范圍內(nèi)執(zhí)行。因此,頂層范圍將是__main__,第二個(gè)范圍將是模塊的范圍。
因此,使用特殊變量__name__和頂級(jí)范圍__main__增加了可重用性。Python 腳本文件可以作為獨(dú)立腳本從命令提示符/終端執(zhí)行,也可以作為模塊導(dǎo)入。****
分享名稱(chēng):Python中的__main__和__name__
網(wǎng)頁(yè)地址:http://m.fisionsoft.com.cn/article/dpedjsj.html


咨詢(xún)
建站咨詢(xún)
