对于正常函数,map
工作良好:
def increment(n):
return n+1
l = [1, 2, 3, 4, 5]
l = map(increment, l)
print l
>>> [2, 3, 4, 5, 6]
但是,如果将print
放在map
函数中:
l = [1, 2, 3, 4, 5]
l = map(print, l)
print l
Python会抱怨:
l = map(print, l)
^
SyntaxError: invalid syntax
什么使print
特别?print(x)
不也是一个有效的函数调用吗?以上代码是在Python2.7下测试的。
正如其他人所说,在Python 2.x中
print
是一个语句。如果您真的想在Python 2.x中执行此操作,可以使用pprint
:在Python 2.x中,
print
是一个语句,而不是函数。如果您在Python3.x中尝试这个方法,它将起作用。在Python2.x中,可以说
print(x)
,这不是语法错误,但实际上不是函数调用。就像1 + (3)
与1 + 3
一样,print(x)
与Python 2.x中的print x
相同在Python2.x中,您可以执行以下操作:
然后你可以:
它会起作用的。请注意,您可能不想执行
lst = map(prn, lst)
,因为prn()
返回None
,所以您将用相同长度的值列表None
替换值列表。编辑:Python2.x的另外两个解决方案
如果要完全更改
print
的行为,可以执行以下操作:这使得
print
成为一个函数,就像在Python 3.x中一样,因此它可以与map()
一起工作。或者,你可以这样做:
pprint()
是一个打印东西的函数,它是一个内置的。我不确定它与默认的print
有什么不同(它说它是一个“漂亮的打印”函数,但我不确定它到底有什么不同)。另外,根据PEP 8标准,不建议使用
l
作为变量名,因此我在示例中使用lst
。http://www.python.org/dev/peps/pep-0008/
在2.x中映射打印的更好方法是
相关问题 更多 >
编程相关推荐