用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],原理是什么

又:使用列表解析

f = lambda x: [sys.stdout.write(line) for line in x]

也是相同的情况

qq_strengthoo_0
浏览 1999回答 2
2回答

qq_strengthoo_0

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

qq_strengthoo_0

自己好像明白一点了,a1是sys.stdout.write执行以后打印到交互界面的结果,但sys.stdout.write本身并没有返回值给列表,所以列表是[None, None]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python