python中,使用lambda表达式定义函数,调用与返回值的问题

#使用lambda表达式定义一个函数

f = (lambda x: map(sys.stdout.write, x))
#调用f
t = f(['a', '1'])
#返回
a1
#调用f
f(['a', '1'])
#返回
a1[None, None]
#请问第二次调用时为什么会返回a1[None, None],原理是什么

3个回答

不要加括号,不然你的f会是一个生成器

 f = lambda x: map(sys.stdout.write, x)
beanwong413
beanwong413 把f改成您这样,我提的问题仍然存在
3 年多之前 回复

自己好像明白一点了,a1是sys.stdout.write执行以后打印到交互界面的结果,但sys.stdout.write本身并没有返回值给列表,所以列表是[None, None]

t = f(['a', '1'])是调用了f,并把f的返回值赋给t,a1是调用函数过程中打印的结果。
f(['a', '1'])是调用f,把返回值打印到交互界面,所以先打印了a1,后打印了f的值[None, None]

beanwong413
beanwong413 由此也可以看出sys.stdout.write是没有返回值的
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐