如何像Python3中的printf一样打印?

如何像Python3中的printf一样打印?,python,string,python-3.x,Python,String,Python 3.x,在Python 2中,我使用了: print "a=%d,b=%d" % (f(x,n),g(x,n)) 我试过: print("a=%d,b=%d") % (f(x,n),g(x,n)) 在Python2中,print是一个关键字,它引入了一个语句: print "Hi" 在Python3中,print是一个可以调用的函数: print ("Hi") 在这两个版本中,%都是一个运算符,它要求在左侧有一个字符串,在右侧有一个值或一个值元组或一个映射对象(如dict) 因此,您的线路应该如

在Python 2中,我使用了:

print "a=%d,b=%d" % (f(x,n),g(x,n))
我试过:

print("a=%d,b=%d") % (f(x,n),g(x,n))

在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引入了另一种字符串格式范例:


最推荐的方法是使用
format
方法。阅读更多关于它的信息


因为您的
%
打印(…)
括号之外,所以您正在尝试将变量插入到
打印调用的结果中
print(…)
返回
None
,因此这将不起作用,还有一件小事,此时您已经打印了您的模板,时间旅行被我们居住的宇宙法则所禁止

要打印的全部内容,包括
%
及其操作数,都需要在
print(…)
调用中,以便在打印字符串之前构建字符串

print( "a=%d,b=%d" % (f(x,n), g(x,n)) )
我添加了一些额外的空格以使其更清晰(尽管它们不是必需的,通常也不被认为是好的样式)。

简单示例:

print(“foo%d,bar%d”%(1,2))

来自的简单printf()函数

示例输出:

i = 7
pi = 3.14159265359
printf("hi there, i=%d, pi=%.2f\n", i, pi)
# hi there, i=7, pi=3.14
一个更简单的

def printf(format, *values):
    print(format % values )
然后:


Python3.6为内联插值引入了f字符串。更棒的是,它扩展了语法,还允许使用插值的格式说明符。我在谷歌上搜索时一直在做的事情(遇到了这个老问题!):


他有详细资料。而且。。。它用其他语言中的格式说明符对我的不满进行了排序——允许说明符本身可以是表达式!耶!请参阅:.

%
始终是一个字符串运算符,与
print
语句无关。例如,您可以使用
s=“a=%d,b=%d”%(f(x,n),g(x,n))
创建一个字符串,然后使用
print s
打印该字符串。或者:
print('a={first:4.2f},b={second:03d})。格式(first=f(x,n),second=g(x,n))
,其中此示例显示了如何使用printf样式修饰符并仍然使用关键字。@rapt,它有一些巨大的优势。其中最重要的一点是,您只能多次引用同一格式或按顺序引用:“{1}、{1}、{0}和{1}”。格式(“鸡蛋”、“垃圾邮件”)==“垃圾邮件、垃圾邮件、鸡蛋和垃圾邮件”注意:这也是将变量注入字符串的最有效方法。呵呵<代码>打印
格式
。。。?回到60多年前的FORTRAN时代:)
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
print("Name={}, balance={}".format(var-name, var-balance))
def printf(format, *values):
    print(format % values )
printf("Hello, this is my name %s and my age %d", "Martin", 20)
print(f'{account:40s} ({ratio:3.2f}) -> AUD {splitAmount}')