Python-51-物件導向16. 讓主程式被引用時不會自動執行 __name__

一般只要被import 的進來的主程式,都會被自動執行

原因在於:

當 Python 檔案(模組、module)被引用的時候,檔案內的每一行都會被 Python 直譯器讀取並執行(所以 page1.py內的程式碼會被執行)

Python 直譯器執行程式碼時,有一些內建、隱含的變數,__name__就是其中之一,其意義是「模組名稱」。如果該檔案是被引用,其值會是模組名稱;

但若該檔案是(透過命令列)直接執行,其值會是 __main__。

可試著在 page1.py 內加上 __name __ 印出看看 , 值的名稱會為__main__


name1.py

def myfn1():
    print("1.hello");
    
print("1.hi");

myfn1();

print("name=",__name__);

 

name2.py

from name1 import myfn1

print("2.hi");

myfn1();

看看效果

主程式在被引用的時候也被執行了,原因在於:

  1. 當 Python 檔案(模組、module)被引用的時候,檔案內的每一行都會被 Python 直譯器讀取並執行(所以 page1.py內的程式碼會被執行)
  2. Python 直譯器執行程式碼時,有一些內建、隱含的變數,__name__就是其中之一,其意義是「模組名稱」。如果該檔案是被引用,其值會是模組名稱;
  3. 但若該檔案是(透過命令列)直接執行,其值會是 __main__

data1.py

def myfn1():
    print("1.hello");

if __name__ == '__main__':    
    print("1.hi");
    myfn1();

 

看看效果

data2.py


from data1 import myfn1

print("2.hi");

myfn1();

 

看看效果

Yiru@Studio - 關於我 - 意如