web-dev-qa-db-ja.com

一重引用符と二重引用符

Python Javaバックグラウンドから来た後に書いているところ、そして他の開発者が単一を使用して文字列を引用する傾向があることに気付いています引用符('')の代わりに二重引用符("")。例えば:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

これには個人的な好み以外に特別な理由はありますか?これは文字列を引用する適切な方法ですか?具体的には、私が知りたいのは、このスタイルのコーディングを推進する標準または承認されたベストプラクティスのタイプがあるかどうかです。

82
Eric Hydrick

他の答えは、技術的な違いはないという点で正しいですが、いくつかのオープンソースプロジェクトで非公式なスタイルのルールを1つ見ました。翻訳)、および単一引用符は、コード自体の機能に関連する文字列用です(例:dictキー、正規表現、SQL)。

これは確かに普遍的なルールではありません(またはPEPで体系化されています)。そのため、コーディングの他の任意の側面と同様に、ローカルルールになります。

PEP 8(この回答を書いたときに気づかなかった)に注意してください says

このPEPはこれを推奨しません。ルールを選び、それに固執する。ただし、文字列に一重引用符または二重引用符が含まれている場合は、もう一方の文字を使用して、文字列にバックスラッシュが含まれないようにします。読みやすさが向上します。

コメンターが指摘するように、「ルール」をどのように解釈するかによって、これは必ずしも矛盾しない。私が提案することは、引用の後半では実際には機能しません。

66
detly

それは非常に簡単です:

  • 一重引用符を使用すると、二重引用符をエスケープせずに埋め込むことができます。
  • 二重引用符を使用すると、エスケープされていない単一引用符を埋め込むことができます。

二重引用符が必要になるまで'(一重引用符)を使用するのが最もPythonicです。

次の引用は、文字列リテラルに関するドキュメントから直接引用しています。

平文の英語:文字列リテラルは、一致する一重引用符( ')または二重引用符( ")で囲むことができます。また、一致する3つの一重引用符または二重引用符のグループで囲むこともできます(これらは通常、三重引用符付き文字列と呼ばれます)。バックスラッシュ()文字は、改行、バックスラッシュ自体、引用符など、特別な意味を持つ文字をエスケープするために使用されます。文字列リテラルには、オプションで文字「r」または「R」をプレフィックスとして付けることができます。このような文字列は、未加工の文字列で、バックスラッシュエスケープシーケンスを解釈するためのさまざまなルールを使用します。「u」または「U」のプレフィックスは、文字列をUnicode文字列にします。Unicode文字列は、UnicodeコンソーシアムとISO 10646で定義されているUnicode文字セットを使用します。いくつかの追加のエスケープシーケンスは、以下で説明するように、Unicode文字列で使用できます。Python 2ではプレフィックス「b」または「B」は無視されます。これは、Pythonでリテラルがバイトリテラルになることを示します3(たとえば、コードが2to3で自動的に変換される場合)。または「b」プレフィックスの後に「r」プレフィックスが続く場合があります。

三重引用符で囲まれた文字列では、エスケープされていない改行と引用符は許可されます(そして保持されます)。 (「引用符」は、文字列を開くために使用される文字です。つまり、 'または "です。)

21
user7519

技術的な観点からは違いはなく、スタイルの観点からはいくつかの考えがあります。

  • 他のほとんどのプログラミング言語は二重引用符を使用します。
  • 英語で書く場合、通常は二重引用符が使用されます。
  • 一重引用符は、アプリケーションに多くの非技術的/説明的なテキストがある場合に便利です。二重引用符をより自然な方法で使用できるためです。 bar = '"It\'s awesome" he said.'
  • 一方、一重引用符文字は、英語で数回使用されることもあります。 bar = "\"It's awesome\" he said."
17
API-Beast

Pythonでの単一引用符と二重引用符の使用に違いはありません。実際には、使用するデータの種類によっては、どちらか一方のスタイルの方が便利な場合があります。

「デフォルトで」使用される引用符のタイプ(どちらか一方を使用する説得力のある理由がない場合)は、ほとんど個人的な好みの問題です。

詳細については、Pythonドキュメントの 文字列リテラル のセクションを参照してください。

4
Greg Hewgill

単一引用符または二重引用符を定期的に使用するかどうかの習慣を身につけるときに考慮すべきいくつかの事柄。

二重引用符には2本の指によるキー入力が必要です。したがって、タイプミスや速度低下の可能性が高くなります

エディターは、ある文字を別の文字よりもよく表示する場合があります。視覚的な構文デバッグを容易にするため。

Docstringはトリプル文字を使用します:どちらが良く見えますか? "" "" ""または '' '' ''

私はこれをWindows OSで見たことはありませんが、一部の構文ツールまたはドキュメントツールでは、二重引用符と単一引用符が必要になる場合があります。

Pythonチュートリアルのほとんどで、私が見たチュートリアルとは逆の経験をしました。通常、二重引用符が使用されています。

4
DevPlayer

私の意見では、文字列には二重引用符を使用することを好みます。

理由他の言語のプログラマー向けコードをより簡単に理解する。

Cプログラマの場合:

'Writing "It\'s big?" No.'

代わりに躊躇するだろう:

"Writing \"It's big?\" No."
4
Lucio