假设我们需要一个函数什么事都不干,只是抛出异常(在某些系统中有些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.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())

最后忠告:玩玩可以,慎用!

转载于:https://www.cnblogs.com/taceywong/p/9264963.html

Python中通过lambda抛异常的奇技淫巧相关推荐

  1. 关于python中lambda函数的描述_关于Python中的lambda函数

    lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...

  2. 关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解

    lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...

  3. Python中的Lambda表达式

    Lambda表达式 (Lambda Expressions) Lambda Expressions are ideally used when we need to do something simp ...

  4. python中的捕获异常、异常跟踪

    捕获异常,打印异常信息 try: 1/0 except Exception as e: print(e) 输出结果是integer division or modulo by zero,只知道是报了这 ...

  5. python的objectproperty,python中property(lambda self: object())简单解释,,最后4行lambda

    python中property(lambda self: object())简单解释,,最后4行lambda 最后4行lambda.问题是:如何运作?它们的含义和结果是什么?您能否以简单的方式显示该声 ...

  6. Python中的lambda和apply结合使用

    1. lambda lambda原型为:lambda 参数:操作(参数) lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方.这区别于def定义的函 ...

  7. python中的lambda函数用法--无需定义函数名的函数或子程序,避免代码充斥着大量单行函数

    匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序. lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值. 要点: lambda 函数不能包含命令 包含 ...

  8. lambda在python_在Python中使用lambda高效操作列表的教程

    介绍 lambda Python用于支持将函数赋值给变量的一个操作符 默认是返回的,所以不用再加return关键字,不然会报错 result = lambda x: x * x result(2) # ...

  9. 一文让你彻底掌握【Python中的lambda函数】

    你应该听说过,应用Python,可以让你处理一天的重复工作量,缩短到几分钟甚至更短.从此解放上班时间,研究更多更有效率的工作方法.进一步提升工作效率,让工作更出彩.这不是广告,这是实锤图片. 本文和你 ...

最新文章

  1. Flink Forward Global 2021 议题征集ing!
  2. jpg , png 图片转SVG格式(资源篇)
  3. Microsoft Enterprise Library 5.0 系列(十) Configuration Application Block
  4. bootstrop 日期控件 datepicker被弹出框dialog覆盖的解决办法
  5. 使用hibernate可以优化的地方
  6. MFC常见控件:滚动条控件
  7. 途牛旅游系统架构的优化实践
  8. kali rpm 安装方法_解决kali linux中无法使用RPM命令
  9. oracle获取字符的长度的函数,oracle取字符串长度的函数length()和hengthb()
  10. The end tag is unbalanced异常
  11. install package vif包_每天学点之CentOS软件源码包安装
  12. 前端怎么加粗字体_【好程序员独家】100道前端面试题(精选版 含答案)
  13. 用python输出所有的玫瑰花数_python玫瑰花
  14. [信息论与编码]离散信道及信道容量(三)
  15. BlackArch---让你有电影中黑客的感觉
  16. android xml绘图p113-p117
  17. web2.0 时代我们需要什么样的阅读---转载
  18. [ACM]【map/分治】厦大月赛 环鸽的CHONG
  19. ngrok搭建+阿里云SSL证书+低成本搭建微信小程序本地调试环境
  20. 2019寒假安排计划

热门文章

  1. 运维侠客行杭州站沙龙回顾 | 云时代下的运维管理实践(附干货下载)
  2. javaweb学习总结二十五(response对象的用法一)
  3. 在eclipse里的 flex 没有可视化的编辑
  4. The Future of Silverlight --December 2, 2010 at 9:00
  5. [转]JavaScript代码收集
  6. 判断SIM卡属于哪个移动运营商
  7. 谈谈-this与super
  8. Golomb及指数哥伦布编码原理介绍及实现
  9. iframe嵌套网页
  10. PowerDesigner 15 进行 数据库反转到 数据库模型