Python使用lambda拋出異常實(shí)現(xiàn)方法解析
假設(shè)我們需要一個(gè)函數(shù)什么事都不干,只是拋出異常(在某些系統(tǒng)中有些handler就是干這事的),我們可以很直觀的寫出下面的代碼:
def func():
raise Exception("this is a exception")
就這么一個(gè)簡(jiǎn)單的功能,我們更希望用lambda實(shí)現(xiàn),自然就寫下了下面的代碼:
lambda :raise Exception("this is a exception")
但遺憾的是這樣是不行的~~~會(huì)出現(xiàn)SyntaxError: invalid syntax的錯(cuò)誤。具體原因可以看Python Lambda
下面搜集實(shí)踐了幾種可用的奇技淫巧:
方法一
func = lambda: (_ for _ in ()).throw(Exception('this is an exception'))
方法二
如果不在乎異常信息是什么:
func = lambda: 1/0
不難理解,這個(gè)函數(shù)會(huì)拋出ZeroDivisionError。這種方法其實(shí)代表了一類,比如也可以寫成:
func = lambda : [][0]
這類實(shí)現(xiàn)就是在lambda后面寫一定會(huì)拋出異常的表達(dá)式
方法三
一種非常陰霸的方式,只適合python3.x
func = lambda : exec('raise(Exception("this is an exception"))')
方法四:
尚未看懂的
# python2.x
type(lambda:0)(type((lambda:0).func_code)(
1,1,1,67,'|\0\0\202\1\0',(),(),('x',),'','',1,''),{}
)(Exception())
或
# python3.x
type(lambda: 0)(type((lambda: 0).__code__)(
1,0,1,1,67,b'|\0\202\1\0',(),(),('x',),'','',1,b''),{}
)(Exception())
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python爬蟲之異常捕獲及標(biāo)簽過濾詳解
- python基礎(chǔ)之文件操作和異常處理
- Python運(yùn)行錯(cuò)誤異常代碼含義對(duì)照表
- Python Selenium異常處理的實(shí)例分析
- python上下文管理器異常問題解決方法
- python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報(bào)警
- 詳解python中的異常和文件讀寫
- Python 獲取異常(Exception)信息的幾種方法
- Python用戶自定義異常的實(shí)現(xiàn)
- python 自定義異常和主動(dòng)拋出異常(raise)的操作
- 通過代碼實(shí)例了解Python異常本質(zhì)
- python裝飾器實(shí)現(xiàn)對(duì)異常代碼出現(xiàn)進(jìn)行自動(dòng)監(jiān)控的實(shí)現(xiàn)方法
- Python pip install之SSL異常處理操作
- 聊聊python中的異常嵌套
- Python基礎(chǔ)之語(yǔ)法錯(cuò)誤和異常詳解
相關(guān)文章
Jinja2實(shí)現(xiàn)模板渲染與訪問對(duì)象屬性流程詳解
要了解jinja2,那么需要先理解模板的概念。模板在Python的web開發(fā)中廣泛使用,它能夠有效的將業(yè)務(wù)邏輯和頁(yè)面邏輯分開,使代碼可讀性增強(qiáng),并且更加容易理解和維護(hù)。模板簡(jiǎn)單來說就是一個(gè)其中包含占位變量表示動(dòng)態(tài)部分的文,模板文件在經(jīng)過動(dòng)態(tài)賦值后,返回給用戶2023-03-03利用Chatgpt開發(fā)一款加減乘除計(jì)算器(Python代碼實(shí)現(xiàn))
這篇文章主要為大家詳細(xì)介紹了如何利用Chatgpt開發(fā)一款加減乘除計(jì)算器(用Python代碼實(shí)現(xiàn)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02Python為何不能用可變對(duì)象作為默認(rèn)參數(shù)的值
這篇文章主要介紹了Python為何不能用可變對(duì)象作為默認(rèn)參數(shù)的值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python實(shí)現(xiàn)啟動(dòng)一個(gè)外部程序,并且不阻塞當(dāng)前進(jìn)程
這篇文章主要介紹了python實(shí)現(xiàn)啟動(dòng)一個(gè)外部程序,并且不阻塞當(dāng)前進(jìn)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12