为什么我们不能将map函数应用于打印python?

为什么我们不能将map函数应用于打印python?,python,printing,python-3.x,pyton-2.7,Python,Printing,Python 3.x,Pyton 2.7,我想知道为什么在python映射函数中不能使用“print”? 我假设print也是一个函数,所以这应该像map在函数上作为文档一样工作:map(function,iterable,…) 您没有迭代map()对象,因此没有进行函数调用map()不会立即应用调用;只有在从迭代器拖动结果时,才会从输入序列中绘制元素并应用print()函数 如果在map()对象上循环,则代码可以工作;例如,通过使用list()调用: >>> a = [1, 2, 3, 4] >>>

我想知道为什么在python映射函数中不能使用“print”? 我假设print也是一个函数,所以这应该像map在函数上作为文档一样工作:
map(function,iterable,…)


您没有迭代
map()
对象,因此没有进行函数调用
map()
不会立即应用调用;只有在从迭代器拖动结果时,才会从输入序列中绘制元素并应用
print()
函数

如果在
map()
对象上循环,则代码可以工作;例如,通过使用
list()
调用:

>>> a = [1, 2, 3, 4]
>>> it = map(print, a)
>>> list(it)
1
2
3
4
[None, None, None, None]

您没有迭代
map()
对象,因此没有进行函数调用
map()
不会立即应用调用;只有在从迭代器拖动结果时,才会从输入序列中绘制元素并应用
print()
函数

如果在
map()
对象上循环,则代码可以工作;例如,通过使用
list()
调用:

>>> a = [1, 2, 3, 4]
>>> it = map(print, a)
>>> list(it)
1
2
3
4
[None, None, None, None]
实际上,您可以在
地图中应用
打印
print
始终返回
None
,但这不是真正的问题

唯一的问题是,
map
工作得很慢
:它返回一个生成器,仅在需要时计算元素。为了让Python正常工作,您需要以某种方式实现映射的结果。例如,您可以使用
列表(…)

在中,
print
不是一个功能,因此您不能将它提供给
map
,实际上可以在
map
中应用
print
print
始终返回
None
,但这不是真正的问题

唯一的问题是,
map
工作得很慢
:它返回一个生成器,仅在需要时计算元素。为了让Python正常工作,您需要以某种方式实现映射的结果。例如,您可以使用
列表(…)


在中,
print
不是一个函数,因此不能将其提供给Python 2中的
map
print
不是一个函数,因此
map(print,[])
触发无效语法

Python2的解决方法是使用实函数写入标准输出
sys.stdout.write
几乎可以作为候选,但您必须添加换行+字符串转换,以大致模拟
print
的功能:

map(lambda x: sys.stdout.write(str(x)+"\n"),a)
它在Python3中工作(但是除非强制迭代,否则映射不起作用)


编辑:
from\uuuuu future\uuuu导入打印\u函数
还允许将
print
用作函数

在Python 2中,
print
不是函数,因此
map(print,[])
触发无效语法

Python2的解决方法是使用实函数写入标准输出
sys.stdout.write
几乎可以作为候选,但您必须添加换行+字符串转换,以大致模拟
print
的功能:

map(lambda x: sys.stdout.write(str(x)+"\n"),a)
它在Python3中工作(但是除非强制迭代,否则映射不起作用)



编辑:
from\uuuuu future\uuuu导入打印功能
还允许将
print
作为一个功能使用

您实际上可以…您知道
print
的功能吗?你知道它返回什么吗?我想你不能在python 2中使用,因为print只是python 3中的一个函数。@Jean FrançoisFabre:
from uuu future_uuuu导入print_函数
也可以在python 2中使用。@Willem,关于标记,你是对的。我第一次尝试地图,但得到了一本字典。我没有名声可以添加标签。你实际上可以…你知道
print
做什么吗?你知道它返回什么吗?我想你不能在python 2中使用,因为print只是python 3中的一个函数。@Jean FrançoisFabre:
from uuu future_uuuu导入print_函数
也可以在python 2中使用。@Willem,关于标记,你是对的。我第一次尝试地图,但得到了一本字典。我没有名誉加标签。威廉,谢谢你的回复。为什么它不打印?它应该按照map的定义打印列表中的元素吗?@好奇:因为
print
函数不
返回
s一些东西,在这种情况下,Python会让它返回
none
。最后一行是映射的结果。明白了,它返回none,因为print不返回anything@curious:的确,它打印在标准输出上,但无论如何都不会生成结果。@谢谢,威廉,谢谢你的回复。为什么它不打印?它应该按照map的定义打印列表中的元素吗?@好奇:因为
print
函数不
返回
s一些东西,在这种情况下,Python会让它返回
none
。最后一行是映射的结果。明白了,它返回none,因为print不返回anything@curious:的确,它打印在标准输出上,但无论如何都不会产生结果。@Thank,Willem