Python使用lambda抛出异常实现方法解析
假设我们需要一个函数什么事都不干,只是抛出异常(在某些系统中有些handler就是干这事的),我们可以很直观的写出下面的代码:
def func():raise Exception('this is a exception')
就这么一个简单的功能,我们更希望用lambda实现,自然就写下了下面的代码:
lambda :raise Exception('this is a exception')
但遗憾的是这样是不行的~~~会出现SyntaxError: invalid syntax的错误。具体原因可以看Python Lambda
下面搜集实践了几种可用的奇技淫巧:
方法一
func = lambda: (_ for _ in ()).throw(Exception(’this is an exception’))
方法二
如果不在乎异常信息是什么:
func = lambda: 1/0
不难理解,这个函数会抛出ZeroDivisionError。这种方法其实代表了一类,比如也可以写成:
func = lambda : [][0]
这类实现就是在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())
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. Admin - SpringBoot + Maven 多启动环境配置实例详解2. Android WebView通过动态的修改js去拦截post请求参数实例3. SpringBoot2整合Ehcache组件实现轻量级缓存管理4. spring boot集成mongodb的增删改查的示例代码5. Django def clean()函数对表单中的数据进行验证操作6. 如何用python写个模板引擎7. django中嵌套的try-except实例8. 浅谈vue实现双向事件绑定v-model的原理9. Android自定义View实现气泡动画10. Django结合使用Scrapy爬取数据入库的方法示例