print()函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
将 objects 打印到 file 指定的文本流,以 sep 分隔并在末尾加上 end。 sep, end, file 和 flush 如果存在,它们必须以关键字参数的形式给出。
所有非关键字参数都会被转换为字符串,就像是执行了 str() 一样,并会被写入到流,以 sep 且在末尾加上 end。 sep 和 end 都必须为字符串;
它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则 print() 将只写入 end。
file 参数必须是一个具有 write(string) 方法的对象;如果参数不存在或为 None,则将使用 sys.stdout。 由于要打印的参数会被转换为文本字符串,
因此 print() 不能用于二进制模式的文件对象。 对于这些对象,应改用 file.write(...)。
输出是否被缓存通常决定于 file,但如果 flush 关键字参数为真值,流会被强制刷新。
print()函数
print()函数将括号的字符串显示在屏幕上。
print('Hello world!')
print('What is your name?') # ask for their name
代码行print('Hello world!')表示“打印出字符串'Hello world!'的文本”。
更漂亮的输出格式
通常,你需要更多地控制输出的格式,而不仅仅是打印空格分隔的值。有几种格式化输出的方法。
- 要使用 格式化字符串字面值 ,请在字符串的开始引号或三引号之前加上一个
f
或F
。在此字符串中,你可以在{
和}
字符之间写可以引用的变量或字面值的 Python 表达式。
>>> year = 2016
>>> event = 'Referendum'
>>> f'Results of the {year} {event}'
'Results of the 2016 Referendum'
- 字符串的
str.format()
方法需要更多的手动操作。你仍将使用{
和}
来标记变量将被替换的位置,并且可以提供详细的格式化指令,但你还需要提供要格式化的信息。
>>> yes_votes = 42_572_654
>>> no_votes = 43_132_495
>>> percentage = yes_votes / (yes_votes + no_votes)
>>> '{:-9} YES votes {:2.2%}'.format(yes_votes, percentage)
' 42572654 YES votes 49.67%'
- 最后,你可以使用字符串切片和连接操作自己完成所有的字符串处理,以创建你可以想象的任何布局。字符串类型有一些方法可以执行将字符串填充到给定列宽的有用操作。
当你不需要花哨的输出而只是想快速显示某些变量以进行调试时,可以使用 repr()
or str()
函数将任何值转化为字符串。
str()
函数是用于返回人类可读的值的表示,而 repr()
是用于生成解释器可读的表示(如果没有等效的语法,则会强制执行 SyntaxError
)对于没有人类可读性的表示的对象, str()
将返回和 repr()
一样的值。很多值使用任一函数都具有相同的表示,比如数字或类似列表和字典的结构。特殊的是字符串有两个不同的表示。
几个例子:
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'"
>>> str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
>>> print(s)
The value of x is 32.5, and y is 40000...
>>> # The repr() of a string adds string quotes and backslashes:
... hello = 'hello, world\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, world\n'
>>> # The argument to repr() may be any Python object:
... repr((x, y, ('spam', 'eggs')))
"(32.5, 40000, ('spam', 'eggs'))"
string
模块包含一个 Template
类,它提供了另一种将值替换为字符串的方法,使用类似 $x
的占位符并用字典中的值替换它们,但对格式的控制要少的多。