使用关键字参数end=' '时出现SyntaxError
当我尝试运行这段代码时:
if Verbose:
print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')
我收到一个 SyntaxError
错误,提示 end=' '
是无效的语法。
为什么会出现这个问题呢?
可以查看 “SyntaxError: Missing parentheses in call to 'print'” 在 Python 中是什么意思? 来了解相反的问题。
可以查看 “为什么在 Python 2.7 中 print 的括号是可选的?” 来了解 Python 2 对 print
作为语句的处理的一般影响。
17 个回答
在Python 2.7中,你可以这样做
mantra = 'Always look on the bright side of life'
for c in mantra: print c,
#output
A l w a y s l o o k o n t h e b r i g h t s i d e o f l i f e
在Python 3.x中
myjob= 'hacker'
for c in myjob: print (c, end=' ')
#output
h a c k e r
这样怎么样:
#Only for use in Python 2.6.0a2 and later
from __future__ import print_function
这样你就可以使用Python 3.0风格的print
函数,而不需要一个个去手动修改所有的print
出现的地方了 :)
你确定你在用的是Python 3.x吗?因为在Python 2.x中,这种语法是不可用的,因为print
还是一个语句。
print("foo" % bar, end=" ")
在Python 2.x中是和
print ("foo" % bar, end=" ")
一样的
print "foo" % bar, end=" "
也就是说,把它当作一个带有元组参数的print调用。
这显然是错误的语法(字面量不接受关键字参数)。在Python 3.x中,print
是真正的函数,所以它也可以接受关键字参数。
在Python 2.x中,end=" "
的正确用法是:
print "foo" % bar,
(注意最后的逗号,这样可以让输出以空格结束,而不是换行)
如果你想对输出有更多控制,可以直接使用sys.stdout
。这样做不会对输出进行任何特殊处理。
当然,在一些较新的Python 2.x版本中(2.5应该可以,不确定2.4是否可以),你可以使用__future__
模块在你的脚本文件中启用它:
from __future__ import print_function
同样的道理适用于unicode_literals
和其他一些不错的功能(比如with_statement
)。不过在一些非常旧的版本(也就是在这个功能被引入之前创建的)Python 2.x中,这些是无法使用的。