程序一定會運行到clean()函數(shù),但是,如果你代碼寫的多,你就應(yīng)該知道,濫用try...except...會讓你非常痛苦。例如它突然給你打印一個運行異常: 1。你根本不知道是哪里出了問題,也不知道具體出了什么問題。為了找到問題,你必須讓程序把錯誤爆出來。但這樣一來,clean()又不能正常運行了。Python退出時強制運行一段代碼
成都創(chuàng)新互聯(lián)致力于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計,成都網(wǎng)站設(shè)計,集團網(wǎng)站建設(shè)等服務(wù)標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
有什么辦法,既能讓程序報錯,又能在報錯已經(jīng)還能運行clean()呢?
這個時候,我們就可以使用Python自帶的atexit這個模塊了。它的使用方法非常簡單:
import atexit
@atexit.register
def clean():
print('清理環(huán)境相關(guān)的代碼')
setup()
test()
這樣一來,我們不需要顯式調(diào)用clean函數(shù)了。無論程序正常結(jié)束,還是程序異常報錯,clean函數(shù)里面的內(nèi)容總會執(zhí)行。
我們這里使用的是python3.6版本,我們先確認python版本及python正常工作。如下面圖中所示,python版本是3.6.5,可以正常登陸。
請點擊輸入圖片描述
我們首先來看第一種方式,使用python提供的exit()函數(shù),如下面兩張圖中所示,分別是linux平臺和windows平臺上的exit()函數(shù)執(zhí)行結(jié)果??梢钥吹剑伎梢哉M顺?。唯一的區(qū)別是,windows平臺結(jié)束后多輸出了一行空行。
請點擊輸入圖片描述
請點擊輸入圖片描述
再看python提供的第二個函數(shù)quit(),同樣是linux和windows平臺,執(zhí)行結(jié)果一致。都可以正常退出,windows平臺多輸出一行空行。
請點擊輸入圖片描述
請點擊輸入圖片描述
函數(shù)方式看完了以后,我們來看快捷鍵退出的方式。先看快捷鍵Ctrl +D的組合。如下面兩張圖中所示,分別是linux平臺和windows平臺上使用Ctrl+D的組合鍵,可以看到,linux平臺上直接退出,而windows平臺上先出現(xiàn)一個^D的字符,敲回車后,提示語法錯誤,無法正常退出。這里就有區(qū)別了。
請點擊輸入圖片描述
請點擊輸入圖片描述
再看第二張快捷鍵的組合方式Ctrl+Z,如下面兩張圖中所示,分別是linux平臺和windows平臺,linux平臺上顯示進程已結(jié)束,程序退出。而在windows平臺上按下Ctrl+Z組合鍵時,只會顯示^Z字符,然后再敲一下回車才能正常退出,這個命令上,linux平臺和windows平臺也有區(qū)別。
請點擊輸入圖片描述
請點擊輸入圖片描述
最后我們再來看一個linux平臺上的python命令行退出方式,這個方式只適合一些特殊場合,例如通過xshell工具連接到linux服務(wù)器上運行python命令行時,xshell卡死了。這個時候就可以用這個方法。打開另外一個命令行,輸入命令:
ps aux? | grep python
找到所有python命令行,比如我這里就有兩個,進程ID分別是12525 12655,如下面圖中所示:
請點擊輸入圖片描述
然后使用kill命令殺掉這兩個進程,如下面圖中所示,殺掉進程后,在啟動python命令行的shell界面,就會顯示進程被退出。這種屬于不正常的退出,只適合特殊情況。到這里,幾種退出方式就講解完畢啦。
請點擊輸入圖片描述
請點擊輸入圖片描述
在 Python 中,“return”函數(shù)的用法如下:
1、return 語句用于退出函數(shù),終止函數(shù)并將 return 值傳回。實例:
def?a(x,y):
if?x==y:
return?x,y
2、用于同一循環(huán)語句下,遇到第一個 return 后即返回。實例:
```python
def?fun(a,b):
print?(a)
return?a
print?(b)
return?b
resunlt?=?fun(2,6)
2
```
3、用于 return 在不帶參數(shù)的情況下(或者沒有寫 return 語句),默認返回 None。實例:
def?recurve(a,b):
if?a%b==0:
return?b
else:
gcd(b,a%b)
以上內(nèi)容參考:百度百科-Python
在一個死循環(huán)中,不使用return、break的情況下,強制退出程序。
#python #結(jié)束進程 #多線程
Python入門題039:退出程序(5種方法)
代碼1:
代碼2:
代碼3:
另開一個終端,ps查看test.py的進程號,然后kill -9殺死該進程。
或直接退出當前運行終端。