如何在Python3中像printf一样打印输出?
如何在Python3中实现类似printf的打印功能?
在Python3中,没有直接的printf函数可以用来格式化输出。然而,我们可以借鉴O'Reilly的Python Cookbook中的一个简单的printf函数来实现类似的功能。
下面是该printf函数的代码:
import sys def printf(format, *args): sys.stdout.write(format % args)
使用该printf函数可以实现如下的输出:
i = 7 pi = 3.14159265359 printf("hi there, i=%d, pi=%.2f\n", i, pi) # hi there, i=7, pi=3.14
这个函数的实现方式让人想起了60多年前的FORTRAN语言中的PRINT和FORMAT关键字。
通过使用这个printf函数,我们可以方便地进行格式化输出,类似于C语言中的printf函数。
在Python3中,想要像printf一样打印输出的问题是由于语言的变化而导致的。在Python2中,我们可以使用printf来格式化输出,但在Python3中,printf函数被移除了。为了解决这个问题,可以使用format方法来代替printf函数。
format方法是Python中最常用的格式化输出方法之一。它可以根据传入的参数来替换字符串中的占位符。下面是一个例子:
a, b = 1, 2 print("a={0},b={1}".format(a, b))
在这个例子中,我们使用format方法来替换字符串中的占位符。"{0}"和"{1}"是占位符,分别对应传入的第一个参数a和第二个参数b。通过format方法,我们可以将a和b的值分别替换到对应的占位符位置,从而实现输出"a=1,b=2"的效果。
需要注意的是,format方法的占位符是从0开始计数的。在上面的例子中,我们使用"{0}"和"{1}"作为占位符,因此对应的参数位置分别是0和1。如果有更多的参数需要替换,可以依次使用"{2}","{3}",...进行占位。
总结起来,想要在Python3中实现类似printf的格式化输出,可以使用format方法来替代。通过传入参数并使用占位符,我们可以灵活地控制输出的格式。更多关于format方法的详细用法可以在官方文档中查找。
在Python2中,print是一个关键字,用于引入一个语句。在Python3中,print是一个函数,可以被调用。在两个版本中,%是一个运算符,需要一个字符串作为左操作数,一个值或值元组或映射对象(如字典)作为右操作数。
所以,你的代码应该是这样的:
print("a=%d,b=%d" % (f(x,n),g(x,n)))
此外,对于Python3及更新版本,推荐使用{}-style的格式化而不是%-style的格式化:
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}')
或者:
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
这个示例展示了你如何使用printf-style的修饰符,并且仍然使用关键字。
它有一些巨大的优势。其中一个最重要的是可以多次引用相同的格式或乱序引用:"eggs, spam, eggs, and spam".format("eggs","spam")=="spam, spam, eggs, and spam"