#示例**基於py3.6
一直對python程式的執行順序有些疑惑,例如python程式是順序執行的,那怎麼還有main函式的出現呢?
在查閱了資料後,參見這裡後,算是有點明白了:
1.python程式是順序執行的,而c++中main()是程式的入口
例如以下**,結果如注釋所示,這裡雖然有個main函式,但是最先輸出的不是「main」而是「test1」:
#test1
print ("test1")
def fun():
print ("fun")
def main():
print ("main")
fun()
if __name__ == '__main__':
main()
'''test1
main
fun'''
2.一段python程式以py檔案執行時,檔案屬性__name__為main
;作為模組匯入時,檔案屬性__name__為檔名
3.總結c++中一main函式為執行的起點;python中首先執行最先出現的非函式定義和非類定義的沒有縮排的**,如示例一之中的第一行
乙份程式為了區分主動執行還是被呼叫,python引入了變數__name__,當檔案是被呼叫時,__name__的值為模組名,當檔案被執行時,__name__為'__main__'
所以會經常看到別人的**這麼寫,同時也是典型的python檔案結構:
#/usr/bin/env/ python #(1) 起始行
#"this is a test module" #(2) 模組文件(文件字串)
import sys
import os #(3) 模組匯入
debug = true #(4) (全域性)變數定義
class fooclass (object):
'foo class'
pass #(5) 類定義(若有)
def main():
'test function'
foo = fooclass()
if debug:
print 'ran test()' #(6) 函式定義(若有)
if __name__ == '__main__':
main()
若是檔案主動執行了,則最好寫成跟上面的例子一樣,main之前不要有可執行**,這樣做到程式從main()開始,流程邏輯性強
若是檔案作為模組被呼叫,則可以不用寫main(),從上而下順序執行。
程式執行順序
public class testa 類b public class testb 類 parent public class parent private testa testa2 newtesta parent變數 public parent parent的子類subclass public cl...
MFC程式執行順序
2 winmain登場 extern c int winapi twinmain hinstance hinstance,hinstance hprevinstance,lptstr lpcmdline,int ncmdshow twinmain函式的 t 是為了支援unicode而準備的乙個巨集。...
MFC程式執行順序
2 winmain登場 extern c int winapi twinmain hinstance hinstance,hinstance hprevinstance,lptstr lpcmdline,int ncmdshow twinmain函式的 t 是為了支援unicode而準備的乙個巨集。...