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,除了可以被直接運行外,還可以作為模塊, 被其他 .py文件導(dǎo)入。不管是直接運行還是被導(dǎo) 入,.py 文件的最頂層代碼都會被運行( Python 用縮 進來區(qū)分代碼層次)。 但是當一個 .py 文件作為模塊被導(dǎo)入時,我們可能不 希望一部分代碼被運行。那么就可以將這部分代碼的 調(diào)用寫在主程序中。

def func_one():
print("func_one")
def func_two():
print("func_two")
func_one()
#程序的主入口
if __name__ == '__main__':
func_two()#當我導(dǎo)入了demo19之后,運行demo13的話,會執(zhí)行demo3內(nèi)部的代碼 import demo19 #執(zhí)行demo4,竟然只打印輸出了func_one
再來解釋下
所以上面代碼 if 的意思就是:如果運行的程序是你自己,那么就 print....
假設(shè)運行的是 xiaoming.py,那么就會執(zhí)行主函數(shù)
假設(shè)運行的是 xiaohong.py,即使 xiaohong 導(dǎo)入了 xiaoming,也不會執(zhí)行 xiaoming.py 里面的主函數(shù)(main 函數(shù))
是否一定需要執(zhí)行入口(主函數(shù))
不一定
假設(shè)沒有主函數(shù),那么運行 xiaoming.py 時,就會至上而下,逐行運行 xiaoming.py 的所有代碼
執(zhí)行入口的意義
將業(yè)務(wù)代碼寫在主函數(shù)上面,主函數(shù)用來調(diào)用有業(yè)務(wù)代碼,代碼結(jié)構(gòu)整潔
向 Java、C、Golang 看齊,他們都是要求一個程序必須有一個主執(zhí)行入口才能正確運行
總結(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)的好處,一個是簡潔,一個是當我們對文件操作的邏輯很長的時候,不會因為忘了關(guān)閉文件而造成不必要的錯誤,需要的朋友可以參考下2023-07-07
python基于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-08
caffe的python接口生成配置文件學(xué)習(xí)
這篇文章主要介紹了caffe的python接口生成配置文件學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
使用python實現(xiàn)excel的Vlookup功能
這篇文章主要介紹了使用python實現(xiàn)excel的Vlookup功能,當我們想要查找的數(shù)據(jù)量較大時,這時則有請我們的主角VLookup函數(shù)出場,那么如何用python實現(xiàn)VLookup呢,需要的朋友可以參考下2023-04-04
手把手教你在Pycharm中新建虛擬環(huán)境并使用(超詳細!)
使用python開發(fā)項目通常都會創(chuàng)建一個虛擬環(huán)境,將項目依賴包安裝到虛擬環(huán)境中,避免一臺電腦上開發(fā)多個項目時依賴包版本號不兼容造成沖突,下面這篇文章主要給大家介紹了關(guān)于如何在Pycharm中新建虛擬環(huán)境并使用的相關(guān)資料,需要的朋友可以參考下2022-06-06

