Python中使用逗号、级联和字符串格式化程序的区别

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (188)

我正在自学巨蟒(2.7)。我了解到,在打印中,我们可以使用以下方法将字符串和变量放在一起:

x = "Hello"
y = "World"

使用逗号:

print "I am printing" , x, y  # I know that using comma gives automatic space

通过使用级联:

print "I am printing" + " " + x + " " + y 

使用字符串格式化程序

print "I am printing %s %s" % (x, y) 

在这种情况下,这三种打印方式都是相同的:

I am printing Hello World

这三者之间有什么区别,是否有一个比另一个更好的特殊情况?

提问于
用户回答回答于

要首先回答一般的问题,在编写代码时,通常需要使用打印将脚本中的信息输出到屏幕上,以确保得到了预期的结果。

随着代码变得更加复杂,您可能会发现日志记录比打印更好,但这是另一个答案的信息。

在打印和返回值的表示之间有很大的区别,这在与Python解释器的交互会话中得到了反映。打印应该打印到您的标准输出。表达式的返回值的回显表示(如果不是,则显示在Python shell中。)在脚本中运行等效代码时将保持沉默。

1.printing

在Python 2中,我们有print语句。在Python 3中,我们得到了一个打印函数,我们也可以在Python 2中使用它。

带有逗号的打印语句(Python 2)

带有逗号分隔项的print语句使用空格分隔它们。尾随逗号将导致另一个空格被追加。没有后缀逗号会追加要附加到打印项目的换行符。

您可以将每个项目放在单独的print语句中,并在每个语句之后使用逗号,它们将在同一行上打印相同的内容。

例如(这只在脚本中起作用,在交互式shell中,在每一行之后都会得到一个新的提示):

x = "Hello"
y = "World"

print "I am printing",
print x,
print y 

产出:

I am printing Hello World

打印函数

使用Python3的内置打印函数(在Python#number0#和2.7中也可以使用此导入):

from __future__ import print_function

您可以声明一个分隔符和一个结束,:

>>> print('hello', 'world', sep='-', end='\n****\n')
hello-world
****
>>>
>>> print('hello', 'world')
hello world
>>> 

2.字符串连接

串联在内存中创建每个字符串,然后将它们在它们的末端组合成一个新字符串(因此这可能不是非常适合内存),然后将它们同时输出到您的输出中。当您需要将字符串(可能是在其他地方构造的)连接在一起时,这是好的。

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

这应该说明您只应该尝试连接已知为字符串的变量。下面演示的新格式设置方式将为您处理此问题。

3.字符串插值

有一次创建了一个新字符串。它所做的相当简单。当您可能需要构建一个相当大的模板(在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,格式文字

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
用户回答回答于

您应该构建列表并使用联接分隔符,例如",".join(list_name)

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励