Python使用lambda拋出異常實現(xiàn)方法解析
假設(shè)我們需要一個函數(shù)什么事都不干,只是拋出異常(在某些系統(tǒng)中有些handler就是干這事的),我們可以很直觀的寫出下面的代碼:
def func():
raise Exception("this is a exception")
就這么一個簡單的功能,我們更希望用lambda實現(xiàn),自然就寫下了下面的代碼:
lambda :raise Exception("this is a exception")
但遺憾的是這樣是不行的~~~會出現(xiàn)SyntaxError: invalid syntax的錯誤。具體原因可以看Python Lambda
下面搜集實踐了幾種可用的奇技淫巧:
方法一
func = lambda: (_ for _ in ()).throw(Exception('this is an exception'))
方法二
如果不在乎異常信息是什么:
func = lambda: 1/0
不難理解,這個函數(shù)會拋出ZeroDivisionError。這種方法其實代表了一類,比如也可以寫成:
func = lambda : [][0]
這類實現(xiàn)就是在lambda后面寫一定會拋出異常的表達(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())
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python爬蟲之異常捕獲及標(biāo)簽過濾詳解
- python基礎(chǔ)之文件操作和異常處理
- Python運(yùn)行錯誤異常代碼含義對照表
- Python Selenium異常處理的實例分析
- python上下文管理器異常問題解決方法
- python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報警
- 詳解python中的異常和文件讀寫
- Python 獲取異常(Exception)信息的幾種方法
- Python用戶自定義異常的實現(xiàn)
- python 自定義異常和主動拋出異常(raise)的操作
- 通過代碼實例了解Python異常本質(zhì)
- python裝飾器實現(xiàn)對異常代碼出現(xiàn)進(jìn)行自動監(jiān)控的實現(xiàn)方法
- Python pip install之SSL異常處理操作
- 聊聊python中的異常嵌套
- Python基礎(chǔ)之語法錯誤和異常詳解
相關(guān)文章
利用Chatgpt開發(fā)一款加減乘除計算器(Python代碼實現(xiàn))
這篇文章主要為大家詳細(xì)介紹了如何利用Chatgpt開發(fā)一款加減乘除計算器(用Python代碼實現(xiàn)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02Python為何不能用可變對象作為默認(rèn)參數(shù)的值
這篇文章主要介紹了Python為何不能用可變對象作為默認(rèn)參數(shù)的值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07python實現(xiàn)啟動一個外部程序,并且不阻塞當(dāng)前進(jìn)程
這篇文章主要介紹了python實現(xiàn)啟動一個外部程序,并且不阻塞當(dāng)前進(jìn)程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12