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后面寫一定會拋出異常的表達式
方法三
一種非常陰霸的方式,只適合python3.x
func = lambda : exec(’raise(Exception('this is an exception'))’)
方法四:
尚未看懂的
# python2.xtype(lambda:0)(type((lambda:0).func_code)(1,1,1,67,’|0020210’,(),(),(’x’,),’’,’’,1,’’),{})(Exception())
或
# python3.xtype(lambda: 0)(type((lambda: 0).__code__)(1,0,1,1,67,b’|020210’,(),(),(’x’,),’’,’’,1,b’’),{})(Exception())
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP.NET MVC實現(xiàn)城市或車型三級聯(lián)動2. IntelliJ IDEA設(shè)置條件斷點的方法步驟3. PHP數(shù)組array類常見操作示例4. 淺談Java HttpURLConnection請求方式5. 永久解決 Intellij idea 報錯:Error :java 不支持發(fā)行版本5的問題6. Eclipse XSD 生成枚舉類型的Schema的實例詳解7. PHP中常用的函數(shù)庫和一些小技巧8. JavaScript內(nèi)置對象之Array的使用小結(jié)9. Java正則表達式實現(xiàn)經(jīng)緯度的合法性操作10. python實現(xiàn)ftp文件傳輸系統(tǒng)(案例分析)
