Python Javaバックグラウンドから来た後に書いているところ、そして他の開発者が単一を使用して文字列を引用する傾向があることに気付いています引用符(''
)の代わりに二重引用符(""
)。例えば:
line1 = 'This is how strings typically look.'
line2 = "Not like this."
これには個人的な好み以外に特別な理由はありますか?これは文字列を引用する適切な方法ですか?具体的には、私が知りたいのは、このスタイルのコーディングを推進する標準または承認されたベストプラクティスのタイプがあるかどうかです。
他の答えは、技術的な違いはないという点で正しいですが、いくつかのオープンソースプロジェクトで非公式なスタイルのルールを1つ見ました。翻訳)、および単一引用符は、コード自体の機能に関連する文字列用です(例:dictキー、正規表現、SQL)。
これは確かに普遍的なルールではありません(またはPEPで体系化されています)。そのため、コーディングの他の任意の側面と同様に、ローカルルールになります。
PEP 8(この回答を書いたときに気づかなかった)に注意してください says :
このPEPはこれを推奨しません。ルールを選び、それに固執する。ただし、文字列に一重引用符または二重引用符が含まれている場合は、もう一方の文字を使用して、文字列にバックスラッシュが含まれないようにします。読みやすさが向上します。
コメンターが指摘するように、「ルール」をどのように解釈するかによって、これは必ずしも矛盾しない。私が提案することは、引用の後半では実際には機能しません。
それは非常に簡単です:
二重引用符が必要になるまで'
(一重引用符)を使用するのが最もPythonicです。
次の引用は、文字列リテラルに関するドキュメントから直接引用しています。
平文の英語:文字列リテラルは、一致する一重引用符( ')または二重引用符( ")で囲むことができます。また、一致する3つの一重引用符または二重引用符のグループで囲むこともできます(これらは通常、三重引用符付き文字列と呼ばれます)。バックスラッシュ()文字は、改行、バックスラッシュ自体、引用符など、特別な意味を持つ文字をエスケープするために使用されます。文字列リテラルには、オプションで文字「r」または「R」をプレフィックスとして付けることができます。このような文字列は、未加工の文字列で、バックスラッシュエスケープシーケンスを解釈するためのさまざまなルールを使用します。「u」または「U」のプレフィックスは、文字列をUnicode文字列にします。Unicode文字列は、UnicodeコンソーシアムとISO 10646で定義されているUnicode文字セットを使用します。いくつかの追加のエスケープシーケンスは、以下で説明するように、Unicode文字列で使用できます。Python 2ではプレフィックス「b」または「B」は無視されます。これは、Pythonでリテラルがバイトリテラルになることを示します3(たとえば、コードが2to3で自動的に変換される場合)。または「b」プレフィックスの後に「r」プレフィックスが続く場合があります。
三重引用符で囲まれた文字列では、エスケープされていない改行と引用符は許可されます(そして保持されます)。 (「引用符」は、文字列を開くために使用される文字です。つまり、 'または "です。)
技術的な観点からは違いはなく、スタイルの観点からはいくつかの考えがあります。
bar = '"It\'s awesome" he said.'
bar = "\"It's awesome\" he said."
Pythonでの単一引用符と二重引用符の使用に違いはありません。実際には、使用するデータの種類によっては、どちらか一方のスタイルの方が便利な場合があります。
「デフォルトで」使用される引用符のタイプ(どちらか一方を使用する説得力のある理由がない場合)は、ほとんど個人的な好みの問題です。
詳細については、Pythonドキュメントの 文字列リテラル のセクションを参照してください。
単一引用符または二重引用符を定期的に使用するかどうかの習慣を身につけるときに考慮すべきいくつかの事柄。
二重引用符には2本の指によるキー入力が必要です。したがって、タイプミスや速度低下の可能性が高くなります
エディターは、ある文字を別の文字よりもよく表示する場合があります。視覚的な構文デバッグを容易にするため。
Docstringはトリプル文字を使用します:どちらが良く見えますか? "" "" ""または '' '' ''
私はこれをWindows OSで見たことはありませんが、一部の構文ツールまたはドキュメントツールでは、二重引用符と単一引用符が必要になる場合があります。
Pythonチュートリアルのほとんどで、私が見たチュートリアルとは逆の経験をしました。通常、二重引用符が使用されています。
私の意見では、文字列には二重引用符を使用することを好みます。
理由他の言語のプログラマー向けコードをより簡単に理解する。
Cプログラマの場合:
'Writing "It\'s big?" No.'
代わりに躊躇するだろう:
"Writing \"It's big?\" No."