Python編程之順序執(zhí)行與程序的主入口詳解
前言
本章將會講解Python編程中的順序執(zhí)行與程序的主入口。
1.順序執(zhí)行(了解)
Python代碼在執(zhí)行過程中,遵循下面的基本原則:
- 普通語句,直接執(zhí)行;
- 碰到函數(shù),將函數(shù)體載入內(nèi)存,并不直接執(zhí)行
- 碰到類,執(zhí)行類內(nèi)部的普通語句,但是類的方法只載入,不執(zhí)行
- 碰到if、for等控制語句,按相應(yīng)控制流程執(zhí)行
- 碰到@,break,continue等,按規(guī)定語法執(zhí)行
- 碰到函數(shù)、方法調(diào)用等,轉(zhuǎn)而執(zhí)行函數(shù)內(nèi)部代碼,執(zhí)行完畢繼續(xù)執(zhí)行原有順序代碼
# #對于普通語句,代碼從上之下執(zhí)行 # print("hello world") # print("hello world") # print("hello world") #此時代碼從上之下執(zhí)行,但是函數(shù)只有在調(diào)用時才會執(zhí)行 # def func_name(): # print("i am func name") # func_name() # class MyClass: # print("i am myclass") # # def my_text(self): # print("i am mytest ") # # # d = MyClass() # d.my_test()
2.程序主入口(熟悉)
一個 .py,除了可以被直接運(yùn)行外,還可以作為模塊, 被其他 .py文件導(dǎo)入。不管是直接運(yùn)行還是被導(dǎo) 入,.py 文件的最頂層代碼都會被運(yùn)行( Python 用縮 進(jìn)來區(qū)分代碼層次)。 但是當(dāng)一個 .py 文件作為模塊被導(dǎo)入時,我們可能不 希望一部分代碼被運(yùn)行。那么就可以將這部分代碼的 調(diào)用寫在主程序中。
def func_one(): print("func_one") def func_two(): print("func_two") func_one() #程序的主入口 if __name__ == '__main__': func_two()
#當(dāng)我導(dǎo)入了demo19之后,運(yùn)行demo13的話,會執(zhí)行demo3內(nèi)部的代碼 import demo19 #執(zhí)行demo4,竟然只打印輸出了func_one
再來解釋下
所以上面代碼 if 的意思就是:如果運(yùn)行的程序是你自己,那么就 print....
假設(shè)運(yùn)行的是 xiaoming.py,那么就會執(zhí)行主函數(shù)
假設(shè)運(yùn)行的是 xiaohong.py,即使 xiaohong 導(dǎo)入了 xiaoming,也不會執(zhí)行 xiaoming.py 里面的主函數(shù)(main 函數(shù))
是否一定需要執(zhí)行入口(主函數(shù))
不一定
假設(shè)沒有主函數(shù),那么運(yùn)行 xiaoming.py 時,就會至上而下,逐行運(yùn)行 xiaoming.py 的所有代碼
執(zhí)行入口的意義
將業(yè)務(wù)代碼寫在主函數(shù)上面,主函數(shù)用來調(diào)用有業(yè)務(wù)代碼,代碼結(jié)構(gòu)整潔
向 Java、C、Golang 看齊,他們都是要求一個程序必須有一個主執(zhí)行入口才能正確運(yùn)行
總結(jié)
到此這篇關(guān)于Python編程之順序執(zhí)行與程序的主入口的文章就介紹到這了,更多相關(guān)Python順序執(zhí)行與程序主入口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實現(xiàn)with結(jié)構(gòu)的@contextmanager方法詳解
這篇文章主要介紹了使用Python實現(xiàn)with結(jié)構(gòu)的@contextmanager方法詳解,這個結(jié)構(gòu)的好處,一個是簡潔,一個是當(dāng)我們對文件操作的邏輯很長的時候,不會因為忘了關(guān)閉文件而造成不必要的錯誤,需要的朋友可以參考下2023-07-07python基于OpenCV模塊實現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù)(流程分析)
這篇文章主要介紹了python基于OpenCV模塊實現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù),這里今天主要是實踐一下視頻流數(shù)據(jù)的預(yù)處理工作,需要的朋友可以參考下2022-05-05淺談django url請求與數(shù)據(jù)庫連接池的共享問題
今天小編就為大家分享一篇淺談django url請求與數(shù)據(jù)庫連接池的共享問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08caffe的python接口生成配置文件學(xué)習(xí)
這篇文章主要介紹了caffe的python接口生成配置文件學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06使用python實現(xiàn)excel的Vlookup功能
這篇文章主要介紹了使用python實現(xiàn)excel的Vlookup功能,當(dāng)我們想要查找的數(shù)據(jù)量較大時,這時則有請我們的主角VLookup函數(shù)出場,那么如何用python實現(xiàn)VLookup呢,需要的朋友可以參考下2023-04-04手把手教你在Pycharm中新建虛擬環(huán)境并使用(超詳細(xì)!)
使用python開發(fā)項目通常都會創(chuàng)建一個虛擬環(huán)境,將項目依賴包安裝到虛擬環(huán)境中,避免一臺電腦上開發(fā)多個項目時依賴包版本號不兼容造成沖突,下面這篇文章主要給大家介紹了關(guān)于如何在Pycharm中新建虛擬環(huán)境并使用的相關(guān)資料,需要的朋友可以參考下2022-06-06