PHP では、"二重引用符" で囲まれた文字列は置換対象の変数として解析されますが、"一重引用符" で囲まれた文字列は解析されません。Pythonでも、これは当てはまりますか?
9 に答える
いいえ:
2.4.1. 文字列とバイトのリテラル
...平易な英語: どちらのタイプのリテラルも、対応する一重引用符 (
'
) または二重引用符 ( )で囲むことができます"
。これらは、3 つの一重引用符または二重引用符の対応するグループで囲むこともできます (これらは一般に、三重引用符で囲まれた文字列と呼ばれます)。バックスラッシュ (\
) 文字は、改行、バックスラッシュ自体、引用文字など、特別な意味を持つ文字をエスケープするために使用されます...
Python は、' と " が同じ機能を持つ数少ない (?) 言語の 1 つです。私にとっての選択は、通常、内容によって異なります。単一引用符を含む文字列を引用する場合は、二重引用符を使用します。逆に、文字列内の文字をエスケープする必要がなくなります。
例:
"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'
これは、Python ドキュメントの「文字列リテラル」ページに記載されています。
他の一部の言語では、一重引用符を使用するとメタ文字が解釈されません。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
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'
インタラクティブな Python インタープリターは、一重引用符を好みます。
>>> "text"
'text'
>>> 'text'
'text'
これは初心者にとって混乱を招く可能性があるため、単一引用符を使用します (コーディング標準が異なる場合を除きます)。
" と ' の文字列引用の違いは、文字列コンテンツ内で他方をエスケープする必要がないことを除いて、スタイルにあります。
スタイル
PEP8は一貫した規則を推奨し、PEP257は docstrings が三重の二重引用符を使用することを提案します。
Python では、単一引用符で囲まれた文字列と二重引用符で囲まれた文字列は同じです。この PEP は、これを推奨するものではありません。ルールを選び、それを守りましょう。ただし、文字列に一重引用符または二重引用符が含まれている場合は、もう一方を使用して文字列内のバックスラッシュを回避してください。可読性が向上します。
三重引用符で囲まれた文字列の場合、PEP 257 の docstring 規則と一致するように、常に二重引用符文字を使用してください。
しかし、広く使用されているのは、自然言語文字列 (補間を含む) に対して二重引用符を優先する慣行です。つまり、潜在的に I18N の候補となるものはすべてです。技術文字列の単一引用符: シンボル、文字、パス、コマンドライン オプション、技術 REGEX など
(たとえば、I18N 用のコードを準備するとき、二重引用符で囲まれた文字列をすばやく変換する半自動 REGEX を実行して、たとえば を使用しますgettext
)
Python で文字列を引用する方法は 3 つあります: "string" 'string' """ string string """ これらはすべて同じ結果を生成します。
Python にも違いはありません。XML を生成する際に、Python を実際に活用することができます。正しい XML 構文では、属性値を二重引用符で囲む必要があります。Java などの多くの言語では、次のような文字列を作成するときに二重引用符をエスケープする必要があります。
String HtmlInJava = "<body bgcolor=\"Pink\">"
しかし、Python では、単に他の引用符を使用し、次のように対応する終了引用符を使用するようにしてください。
html_in_python = '<body bgcolor="Pink">'
かなりいいでしょ?次のように EOL を含めて、3 つの二重引用符を使用して複数行の文字列を開始および終了することもできます。
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'."""