Python中“string”和“string”之间有什么区别吗?

时间:2008-09-27 14:39:02

标签: python string quotes double-quotes

在PHP中,用“双引号”括起来的字符串将被解析为要替换的变量,而用“单引号”括起来的字符串则不会。在Python中,这也适用吗?

9 个答案:

答案 0 :(得分:113)

No

  

2.4.1。字符串和字节文字

     

...用简单的英语:两种类型的文字都可以用匹配的单引号(')或双引号(")括起来。它们也可以包含在三个单引号或双引号的匹配组中(这些通常称为三引号字符串)。反斜杠(\)字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引号字符......

答案 1 :(得分:36)

Python是少数(?)语言中的一种,其中'和'具有相同的功能。我的选择通常取决于内部的内容。如果我要引用其中包含单引号的字符串,我将会使用双引号,反之亦然,以减少必须转义字符串中的字符。

示例:

"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'

这是在python文档的“String Literals”页面上记录的:

答案 2 :(得分:8)

在某些其他语言中,如果使用单引号,则不会解释元字符。以Ruby为例:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

在Python中,如果你想要字面意思地使用字符串,你可以使用原始字符串(以'r'字符开头的字符串):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2

答案 3 :(得分:3)

Python中的单引号和双引号字符串是相同的。唯一的区别是单引号字符串可以包含未转义的双引号字符,反之亦然。例如:

'a "quoted" word'
"another 'quoted' word"

然后,还有三引号字符串,允许引号字符和换行符都不转义。

您可以使用命名说明符和locals()内置函数替换字符串中的变量:

name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals()  # prints 'My name is John Smith'

答案 4 :(得分:3)

交互式Python解释器更喜欢单引号:

>>> "text"
'text'

>>> 'text'
'text'

这可能会让初学者感到困惑,所以我会坚持使用单引号(除非你有不同的编码标准)。

答案 5 :(得分:3)

“和”字符串引用之间的区别仅在于样式 - 除了该字符串消除了在字符串内容中转义另一个内容的需要。

风格

PEP8建议使用一致的规则,PEP257建议文档字符串使用三重双引号。

  

在Python中,单引号字符串和双引号字符串是   相同。该PEP不会对此提出建议。选择规则   并坚持下去。当字符串包含单引号或双引号时   但是,使用另一个字符来避免反斜杠   串。它提高了可读性。

     

对于三引号字符串,请始终使用双引号字符   符合PEP 257中的文档字符串约定。

然而,广泛使用的做法是更喜欢自然语言字符串的双引号(包括插值) - 因此任何可能成为I18N的候选者。技术字符串的单引号:符号,字符,路径,命令行选项,技术REGEX,......

(例如,在为I18N准备代码时,我会快速运行半自动REGEX转换双引号字符串以使用例如gettext

答案 6 :(得分:0)

有三种方法可以在python中搜索字符串: “串” '串' “”” 串 串 “”” 它们都会产生相同的结果。

答案 7 :(得分:0)

Python没有任何区别,您可以在生成XML时真正使用它。正确的XML语法需要在属性值周围使用双引号,并且在许多语言中,例如Java,这会强制您在创建如下字符串时转义它们:

String HtmlInJava = "<body bgcolor=\"Pink\">"

但在Python中,您只需使用其他引用,并确保使用匹配的结束引用,如下所示:

html_in_python = '<body bgcolor="Pink">'

非常好吧?您还可以使用三个双引号来开始和结束多行字符串,其中包含的EOL如下:

multiline_python_string = """
This is a multi-line Python string which contains line breaks in the 
resulting string variable, so this string has a '\n' after the word
'resulting' and the first word 'word'."""

答案 8 :(得分:-3)

是。 那些声称单引号和双引号在Python中完全相同的说法是完全错误的。

否则,在以下代码中,双引号字符串不会花费额外4.5%的时间来处理Python:

import time

time_single = 0
time_double = 0

for i in range(10000000):
    # String Using Single Quotes
    time1 = time.time()
    str_single1 = 'Somewhere over the rainbow dreams come true'
    str_single2 = str_single1
    time2 = time.time()
    time_elapsed = time2 - time1
    time_single += time_elapsed

    # String Using Double Quotes 
    time3 = time.time()
    str_double1 = "Somewhere over the rainbow dreams come true"
    str_double2 = str_double1
    time4 = time.time()
    time_elapsed = time4 - time3
    time_double += time_elapsed

print 'Time using single quotes: ' + str(time_single)
print 'Time using double quotes: ' + str(time_double)

输出:

>python_quotes_test.py
Time using single quotes: 13.9079978466
Time using double quotes: 14.5360121727

因此,如果你想要快速清理可敬的代码,你似乎知道你的东西,那么在实际可行时使用单引号作为字符串。您也可以通过跳过Shift键来消耗更少的能量。