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

歡迎訪問 生活随笔!

生活随笔

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

python

if __name__ == __main___终于搞懂了Python脚本里的if __name__ == #39;__main__#39;

發布時間:2025/3/21 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 if __name__ == __main___终于搞懂了Python脚本里的if __name__ == #39;__main__#39; 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經常在Python腳本的最后看到有這樣的語句:

if?__name__?==?'__main__':????main()

那么這是什么意思呢?

__name__是什么?

__name__是當前模塊(腳本文件)的一個屬性,當直接運行當前腳本時,__name__的值是'__main__'。

而當當前模塊(腳本文件)被其他腳本import時,它的__name__屬性的值為模塊名。

舉個例子:

腳本文件1:print_array.py

腳本文件1定義了一個名為my_fun()的函數。

#!/usr/bin/env python#-*- coding:utf-8 -*-import numpy as npdef my_fun(): n = input("Input a single positive odd integer greater than 2: ") while True: try: n = int(n) if (int(n) % 2 == 0 or int(n) < 2): n = input("Oops, you have given a WRONG number! Please input a single positive odd integer greater than 2: ") else: break except: n = input("Oops, you have given a WRONG number! Please input a single positive odd integer greater than 2: ") print ("n = %s" %n) a = np.zeros((n, n), dtype=int) m = n // 2 a[:, m] = 1 a[m, :] = 1 print (a)def main(): my_fun()if __name__ == '__main__': main()

腳本文件2:main_test.py

腳本文件2對腳本文件1進行了調用。

#!/usr/bin/env python#-*- coding:utf-8 -*-import print_arrayprint (print_array.__name__)print (__name__)

開始測試:

第一步:直接執行print_array.py,my_fun()函數被運行,結果如下:

第二步:直接執行main_test.py,my_fun()函數沒有被運行,結果如下:

由此可以看出,print_array.py中增加了對__name__屬性的判斷后,在被main_test.py調用時,不會運行my_fun()函數。

同時,在執行main_test.py時,pring_array的__name__屬性的值為'print_array',而main_test.py本身的__name__屬性值為'__main__'。

第三步:對print_array.py作一些修改,去掉對__name__屬性的判斷,改為直接運行my_fun()函數:

第四步:再次執行main_test.py,結果如下:

可以看到在import print_array時,print_array.py中的my_fun()函數同時被運行了。

總結

通過以上幾個步驟,可以看出if __name__ == '__main__' 在腳本中起到的作用。

模塊作為腳本獨立執行時,__name__ == '__main__'的結果為True,if中的語句會被運行。

模塊作為被其他腳本調用的子模塊時,腳本文件中的__name__?==?'__main__'的結果為False,if中的語句不會被運行。

因此,如果模塊不存在被調用的場景,這句話可以省略。如果存在被調用的場景,那么是必不可少的。

總結

以上是生活随笔為你收集整理的if __name__ == __main___终于搞懂了Python脚本里的if __name__ == #39;__main__#39;的全部內容,希望文章能夠幫你解決所遇到的問題。

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