当前位置: 首页 > 面试题库 >

在Python中使用逗号,串联和字符串格式化程序之间的区别

轩辕实
2023-03-14
问题内容

我自己学习python(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解释器进行的交互式会话中回显的打印值和返回值的表示形式之间,有很大的不同。打印应打印到标准输出。None在脚本中运行等效代码时,表达式返回值的回显表示形式(如果未显示,则显示在Python
Shell中)将保持沉默。

在Python 2中,我们有打印语句。在Python 3中,我们获得了打印功能,也可以在Python 2中使用。

使用逗号打印语句(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
>>>

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.字符串插值

您演示的格式是从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的新功能,格式文字

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


 类似资料:
  • 问题内容: 我看到许多人使用这样的格式字符串: 而不是像这样简单地串联字符串: 格式字符串是否具有更好的性能,还是仅用于外观? 问题答案: 这只是为了外观。您可以一眼看出格式是什么。我们中的许多人都比微优化更喜欢可读性。 让我们看看IPython的意思:

  • 问题内容: 我正在开发一个应用程序,在其中执行一些请求以获取对象ID。在它们每个之后,我调用一个方法()将此id作为参数传递(请参见下面的代码)。 可以注意到,我正在将其转换为前缀并将其与前缀连接。但是,我知道我能做到这一点的多种其他方式(或者,例如),并在我的问题的结果:将超过字符串连接更好的可读性,代码约定和效率方面? 谢谢 问题答案: 这很容易成为基于意见的主题,但是我发现格式在大多数情况下

  • 问题内容: 如何在GWT中格式化我的字符串? 我做了一个方法 但它抱怨说 不包括格式化程序吗? 问题答案: 更新:在进一步查看此答案之前,请先查看(并投票)约瑟夫·卢斯特的帖子。 看起来这篇文章没有包含格式化器。但是,他们提出了一些替代方案。

  • 主要内容:指定最小输出宽度,指定对齐方式,指定小数精度我们在《 第一个Python程序——在屏幕上输出文本》中讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出,这就是本节要讲解的内容。 熟悉C语言 printf() 函数的读者能够轻而易举学会 Python print() 函数,它们是非常类似的。 print() 函数使用以 开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

  • 问题内容: 在PHP中,将解析包含在“双引号”中的字符串以替换变量,而不会解析包含在“单引号”中的字符串。在Python中,这是否也适用? 问题答案: 否: 2.4.1。字符串和字节文字 …用简单的英语:两种类型的文字都可以用匹配的单引号()或双引号()括起来。它们也可以包含在三个单引号或双引号的匹配组中(通常称为三引号字符串)。反斜杠()字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引

  • 问题内容: print(‘%24s’ % “MyString”) # prints right aligned print(‘%-24s’ % “MyString”) # prints left aligned 如何在中间打印?有快速的方法吗? 我不希望文本位于屏幕的中心。我希望它位于 那 24个空间的中心。如果我必须手动执行此操作,则添加相同编号后的数学原理是什么。文字前后的空格? 问题答案: