在Python 2中我用过:
print "a=%d,b=%d" % (f(x,n),g(x,n))
我试过了:
print("a=%d,b=%d") % (f(x,n),g(x,n))
答案 0 :(得分:181)
在Python2中,print
是一个引入语句的关键字:
print "Hi"
在Python3中,print
是一个可以调用的函数:
print ("Hi")
在两个版本中,%
是一个运算符,它需要左侧的字符串和值的值或元组或右侧的映射对象(如dict
)侧。
所以,你的界限应该是这样的:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
此外,对Python3及更新版本的建议是使用{}
- 样式格式而不是%
- 样式格式:
print('a={:d}, b={:d}'.format(f(x,n),g(x,n)))
Python 3.6引入了另一种字符串格式范例:f-strings。
print(f'a={f(x,n):d}, b={g(x,n):d}')
答案 1 :(得分:49)
最值得推荐的方法是使用format
方法。详细了解here
a, b = 1, 2
print("a={0},b={1}".format(a, b))
答案 2 :(得分:23)
来自O'Reilly's Python Cookbook的简单printf()函数。
import sys
def printf(format, *args):
sys.stdout.write(format % args)
示例输出:
i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
答案 3 :(得分:19)
Python 3.6为内联插值引入了f字符串。甚至更好的是它扩展了语法以允许带插值的格式说明符。当我用Google搜索时,我一直在做的事情(并且遇到了这个老问题!):
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')
PEP 498有详细信息。并且...它在其他语言中使用格式说明符对我的宠物进行排序 - 允许说明符本身可以是表达式!好极了!请参阅:Format Specifiers。
答案 4 :(得分:12)
简单示例:
print("foo %d, bar %d" % (1,2))
答案 5 :(得分:8)
更简单的一个。
def printf(format, *values):
print(format % values )
然后:
printf("Hello, this is my name %s and my age %d", "Martin", 20)
答案 6 :(得分:3)
由于您的%
位于print(...)
个括号之外,因此您尝试将变量插入print
来电的结果中。 print(...)
会返回None
,所以这不会起作用,而且这个时间和行程被我们所居住的宇宙定律所禁止,这也是你已经打印过模板的小事。 / p>
您要打印的整个内容(包括%
及其操作数)需要在内部print(...)
调用,以便字符串可以在它之前构建打印出来。
print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
我添加了一些额外的空格以使其更清晰(虽然它们不是必需的,通常不被认为是好的风格)。
答案 7 :(得分:1)
print("Name={}, balance={}".format(var-name, var-balance))
答案 8 :(得分:0)
其他字样printf在python中缺席...我很惊讶! 最好的代码是
def printf(format, *args):
sys.stdout.write(format % args)
因为这种形式允许不打印\ n。所有其他人没有。这就是为什么打印是坏运营商的原因。而且你需要以特殊形式编写args。上面的功能没有缺点。它是printf函数的标准常用形式。
答案 9 :(得分:-2)