Python使用lambda抛出异常实现方法解析

作者:Tacey Wong 时间:2022-02-06 21:59:52 

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

猜你喜欢

  • php动态函数调用方法

    2023-11-15 00:18:30
  • Python+Pygame实战之24点游戏的实现

    2023-11-07 21:14:12
  • pytorch教程resnet.py的实现文件源码分析

    2023-11-07 21:18:47
  • YUI 学习笔记:Event

    2009-02-21 11:15:00
  • 详解Python的Django框架中的templates设置

    2021-12-15 15:16:06
  • Dreamweaver量身打造Wordpress留言板

    2009-12-09 17:08:00
  • 从零开始写jQuery框架

    2008-12-24 13:37:00
  • 图文详解如何在WordPress中嵌入iFrame

    2023-06-12 23:58:02
  • Python之lxml安装失败的解决

    2023-11-27 04:34:22
  • asp无组件实现画简单图形的类

    2004-06-17 13:30:00
  • JS实现仿Windows经典风格的选项卡Tab切换代码

    2023-08-25 05:33:54
  • Pytorch模型微调fine-tune详解

    2021-06-17 07:29:00
  • PHP图片库imagemagick安装方法

    2023-11-16 18:54:38
  • JavaScript框架比较:DOM遍历

    2010-04-23 14:41:00
  • Python入门教程3. 列表基本操作【定义、运算、常用函数】 <font color=red>原创</font>

    2023-07-15 13:09:19
  • 理解Python垃圾回收机制

    2023-01-19 23:39:32
  • MySQL两种识别是否有中文字符的方法

    2011-01-04 20:11:00
  • ASP实现防止网站被采集代码

    2011-03-25 10:40:00
  • asp如何实现网上考试功能?

    2010-05-24 18:32:00
  • 浅谈python中统计计数的几种方法和Counter详解

    2023-02-22 12:24:01
  • asp之家 网络编程 m.aspxhome.com