为了首先回答一般性问题,在编写代码时,通常会使用打印将脚本中的信息输出到屏幕上,以确保获得期望的结果。
随着代码变得更加复杂,您可能会发现日志记录会比打印更好,但这是另一个答案的信息。
在使用Python解释器进行的交互式会话中回显的打印值和返回值的表示形式之间,有很大的不同。打印应打印到标准输出。None
在脚本中运行等效代码时,表达式返回值的回显表示形式(如果未显示,则显示在Python Shell中)将保持沉默。
在Python 2中,我们有打印语句。在Python 3中,我们获得了打印功能,也可以在Python 2中使用。
用逗号分隔项目的print语句使用空格将其分隔。末尾逗号将导致附加另一个空格。尾随逗号不会将换行符附加到您的打印项目中。
您可以将每个项目放在单独的打印语句上,并在每个语句之后使用逗号,它们将在同一行上打印相同的内容。
例如(这仅在脚本中,在交互式外壳中有效,每行之后都会出现一个新提示):
x = "Hello"
y = "World"
print "I am printing",
print x,
print y
将输出:
I am printing Hello World
使用Python 3的内置打印功能,此导入也可在Python 2.6和2.7中使用:
from __future__ import print_function
您可以声明一个分隔符和一个结尾,这为我们提供了更多的灵活性:
>>> print('hello', 'world', sep='-', end='\n****\n')
hello-world
****
>>>
默认' '
值为sep和'\n'
end:
>>> print('hello', 'world')
hello world
>>>
串联会在内存中创建每个字符串,然后将它们的末端组合成一个新字符串(这样可能对内存不太友好),然后同时将它们打印到输出中。当您需要将可能在其他位置构造的字符串连接在一起时,这很好。
print('hello' + '-' + 'world')
将打印
hello-world
在尝试以这种方式将其他类型的文字连接到字符串之前,请务必小心,首先将文字转换为字符串。
print('here is a number: ' + str(2))
版画
here is a number: 2
如果尝试连接整数而不先将其强制转换为字符串:
>>> print('here is a number: ' + 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
这应该表明您只能尝试连接已知为字符串的变量。接下来演示的新格式化方式将为您解决此问题。
您演示的格式是从C借来的旧样式的字符串插值。它采用旧字符串,一次创建一个新字符串。它的作用非常简单。当您似乎可能要构建一个相当大的模板时(在3行以上和3+变量处,您肯定应该这样做),应该使用此方法。
这样做的新方法是执行此操作(使用参数的索引):
print('I am printing {0} and {1}'.format(x, y))
或在python 2.7或3中(使用隐含索引):
print('I am printing {} and {}'.format(x, y))
或带有命名参数(在语义上易于阅读,但是代码看起来不太干(即,不要重复自己))
print('I am printing {x} and {y}'.format(x=x, y=y))
相对于%
样式格式设置(此处未演示)的最大好处是,它可以让您组合位置参数和关键字参数
print('I am printing {0} and {y}'.format(x, y=y))
Python 3.6将具有格式文字,并具有更优雅的语法(减少冗余)。简单的语法类似于:
print(f'I am printing {x} and {y}')
>>> print(f'I am printing {"hello".capitalize()} and {"Wo" + "rld"}')
I am printing Hello and World