日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中def main是什么意思_关于python:为什么使用def main()?

發布時間:2024/7/19 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中def main是什么意思_关于python:为什么使用def main()? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本問題已經有最佳答案,請猛點這里訪問。

Possible Duplicate:

What does if __name__=="__main__" do?

我看過一些代碼示例和教程

1

2

3

4

5def main():

# my code here

if __name__ =="__main__":

main()

但是為什么呢?有沒有什么理由不在文件的頂部定義函數,然后在下面寫代碼?工業工程

1

2

3

4

5

6

7

8

9def my_function()

# my code here

def my_function_two()

# my code here

# some code

# call function

# print(something)

我只是想知道主旋律有沒有押韻?

請參閱stackoverflow.com/questions/419163/what-do-if-name-main-do

stackoverflow.com/questions/419163/what-do-if-name-main-do無法回答整個問題。

所謂的副本并沒有回答:擁有一個main()函數(而不是僅僅將所有代碼寫入"if name"塊)是有用的,因為它可以避免意外地創建可能影響其他函數的全局變量。

以及其他答案,有一個執行代碼的入口點可以使用setup.py中的入口點自動生成可執行腳本,這些腳本包裝導入和執行步驟。當你希望你的用戶能夠寫setup-my-app ...而不是python2.7 /opaque/path/to/module.py ...時,這是很好的。

如果沒有主sentinel,即使腳本作為模塊導入,也會執行代碼。

同樣值得注意的是,擁有一個main()函數可以使用:import module; module.main()運行該代碼。如果代碼只是在if塊中,則無法從其他地方運行。

其他人都已經回答過了,但我想我還有別的事要補充。

調用main()的if語句(無特殊順序)的原因:

其他語言(如C語言和Java語言)有一個EDOCX1×7函數,它在執行程序時被調用。使用這個if,我們可以使python的行為像它們一樣,這讓許多人覺得更熟悉。

代碼將更干凈、更容易閱讀和更具組織性。(是的,我知道這是主觀的)

對于import來說,將python代碼作為一個模塊是可能的,不會產生不良的副作用。

這意味著可以對該代碼運行測試。

這意味著我們可以將該代碼導入到交互式Python shell中,并測試/調試/運行它。

def main中的變量是局部變量,而它之外的變量是全局變量。這可能會引入一些錯誤和意外行為。

但是,不需要編寫main()函數并在if語句中調用它。

我自己通常開始寫一些沒有任何功能的廢棄腳本。如果腳本變得足夠大,或者如果我覺得將所有代碼放在函數中對我有利,那么我重構代碼并執行它。當我編寫bash腳本時,也會發生這種情況。

即使您將代碼放在主函數中,也不需要完全按此方式編寫代碼。一個簡單的變化可能是:

1

2

3

4

5

6

7

8import sys

def main(argv):

# My code here

pass

if __name__ =="__main__":

main(sys.argv)

這意味著您可以從傳遞自定義參數的其他腳本(或交互shell)調用main()。這可能在單元測試或批處理時很有用。但請記住,上面的代碼將需要解析argv,因此最好使用傳遞已解析參數的不同調用。

在我編寫的面向對象應用程序中,代碼如下所示:

1

2

3

4

5

6class MyApplication(something):

# My code here

if __name__ =="__main__":

app = MyApplication()

app.run()

因此,請隨意編寫更適合您的代碼。:)

使用sys.argv作為參數調用main的一個好處是,這種方法與argparse模塊(imo是處理命令行參數的正確方法)很好地工作。你所需要做的就是在main中把argv傳給parse_args。

如果foo.py的內容

1

2

3print __name__

if __name__ == '__main__':

print 'XXXX'

文件foo.py可以通過兩種方式使用。

imported in another file : import foo

在這種情況下,__name__為foo,代碼段不執行,不打印XXXX。

executed directly : python foo.py

直接執行時,__name__與__main__相同,執行該段代碼并打印XXXX。

使用此功能在同一模塊中編寫各種單元測試的一種。

"if __name__=="__main__":是做什么的?"已經回答。

如果您使用import模塊,那么擁有main()功能允許您調用它的功能。這個(imho)的主要(沒有雙關語)好處是您可以對它進行單元測試。

兩個答案相同的問題不會重復。

@布巴卡佐巴:我同意。我沒有將這個問題標記為副本。這個問題的一部分有一個很好的答案,我認為復制答案毫無意義。我回答了剩下的問題。

考慮第二個腳本。如果您將其導入到另一個目錄中,那么將執行"全局級"的指令。

總結

以上是生活随笔為你收集整理的python中def main是什么意思_关于python:为什么使用def main()?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。