午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Python程序執(zhí)行順序

 沙門空海 2018-09-14

#示例代碼基于py3.6

一直對Python程序的執(zhí)行順序有些疑惑,例如python程序是順序執(zhí)行的,那怎么還有main函數(shù)的出現(xiàn)呢?

1.python程序是順序執(zhí)行的,而C++中main()是程序的入口

例如以下代碼,結(jié)果如注釋所示,這里雖然有個(gè)main函數(shù),但是最先輸出的不是“main”而是“test1”:

 1 #test1 
 2 print ("test1") 
 3 def Fun(): 
 4     print ("Fun") 
 5 def main(): 
 6     print ("main") 
 7     Fun() 
 8 if __name__ == '__main__': 
 9     main()
 10 '''
 11 test1
 12 main
 13 Fun
 14 '''

2.一段python程序以py文件運(yùn)行時(shí),文件屬性__name__為main;作為模塊導(dǎo)入時(shí),文件屬性__name__為文件名:

 1 #test.py 
 2 def Fun(): 
 3     print ("Fun") 
 4 if __name__ == '__main__': 
 5     print ("main") 
 6     Fun() 
 7 ''' 
 8 main 
 9 Fun
 10 '''

 

3.總結(jié)

C++中一main函數(shù)為執(zhí)行的起點(diǎn);Python中首先執(zhí)行最先出現(xiàn)的非函數(shù)定義和非類定義的沒有縮進(jìn)的代碼,如示例一之中的第一行

一份程序?yàn)榱藚^(qū)分主動(dòng)執(zhí)行還是被調(diào)用,Python引入了變量__name__,當(dāng)文件是被調(diào)用時(shí),__name__的值為模塊名,當(dāng)文件被執(zhí)行時(shí),__name__為'__main__'

所以會(huì)經(jīng)??吹絼e人的代碼這么寫,同時(shí)也是典型的python文件結(jié)構(gòu):

 1 #/usr/bin/env/ python            
 #(1) 起始行 2 #"this is a test module"          
 #(2) 模塊文檔(文檔字符串) 3 import sys 4 import os              
 #(3) 模塊導(dǎo)入 5  6 debug = True              
 #(4) (全局)變量定義 7 class FooClass (object): 8     'foo class' 9     pass                           #(5) 類定義(若有) 10 def main():11     'test function'12     foo = FooClass()13     if debug:14         print 'ran test()'         
 #(6) 函數(shù)定義(若有) 15 if __name__ == '__main__':16     main()
復(fù)制代碼

若是文件主動(dòng)執(zhí)行了,則最好寫成跟上面的例子一樣,main之前不要有可執(zhí)行代碼,這樣做到程序從main()開始,流程邏輯性強(qiáng)

若是文件作為模塊被調(diào)用,則可以不用寫main(),從上而下順序執(zhí)行。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多