如何从无参lambda函数中获取并打印计算结果5?
解决方法
你的代码里,testt是一个lambda函数,直接打印它只会输出函数对象。要拿到数值5,需要两步:
- 首先调用lambda函数
testt(),得到testfn(2,3)返回的生成器对象 - 然后从生成器中取出产出的值
方法一:用next()函数获取生成器的第一个值
修改后的代码如下:
def testfn(x,y): yield (x+y) testt = lambda: testfn(2,3) print(next(testt())) # 输出5
方法二:遍历生成器获取值
如果生成器可能产出多个值,也可以用循环遍历:
def testfn(x,y): yield (x+y) testt = lambda: testfn(2,3) for result in testt(): print(result) # 输出5
为什么原代码不行?
因为testfn是用yield定义的生成器函数,调用它不会直接返回计算结果,而是返回一个生成器对象,只有通过next()或者迭代操作,才会执行函数体并得到x+y的结果。而你原代码里直接打印testt,输出的是lambda函数本身,既没有调用lambda,也没有处理生成器。
内容的提问来源于stack exchange,提问作者Denny
相关产品推荐
相关产品推荐

