Python中通过lambda抛异常的奇迹淫巧,,假设我们需要一个函数
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,'|\0\0\202\1\0',(),(),('x',),'','',1,''),{})(Exception())
或
# python3.xtype(lambda: 0)(type((lambda: 0).__code__)( 1,0,1,1,67,b'|\0\202\1\0',(),(),('x',),'','',1,b''),{})(Exception())
最后忠告:玩玩可以,慎用!
Python中通过lambda抛异常的奇迹淫巧
相关内容
- python中消息队列RabbitMQ的使用,,1,简介Rabbit
- python-数据结构代码 图(邻接表),,class Vert
- Python3.x:简单时间调度Timer(间隔时间执行),python3
- python单元测试unitest,,import uni
- python运维实战--LVM创建和在线扩容,,python运维实战
- 鍩轰簬python璇█鐨則ensorflow鐨勨€樼鍒扮鈥欑殑
- Python iter() 函数,pythoniter函数,iter() 函数用
- Python之code对象与pyc文件(二),,上一节:Python
- CIFAR-10和python读取,cifar-10python,1、CIFAR-10
- python注册到eureka,,由于python提供
评论关闭