質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

Pythonでは '単一引用符(シングルクオート)' を使うのが多いみたいですが、どうして?

解決済

回答 4

投稿

  • 評価
  • クリップ 2
  • VIEW 9,426

hacosato

score 37

Pythonの初学者です!

https://pep8-ja.readthedocs.io/ja/latest/#id14

PEP8を見ると、

Python では、単一引用符 ' で囲まれた文字列と、二重引用符 " で囲まれた文字列は同じです。この PEP では、どちらを推奨するかの立場は示しません。


(文字をエスケープする方法がわからなかった…)

って書いてありますが、実際いろんなひとのコードを見ると、 '単一引用符(シングルクオート)' を使ってるひとがほとんどみたいな気がします。

なにか理由や事情や経緯があるのでしょうか?

個人的には "二重引用符(ダブルクオート)" のほうが好きです! 入力しやすいので!

それだとだめな感じがあるのなら、がんばって 'こちら' に変えます!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+10

英語キーボードでは、シングルクォートとダブルクォートは同じキーに割り当てられていて、シングルクォートはシフト無しですが、ダブルクォートはシフトが要ります。なので、アメリカではシングルクォートを使う人が多いのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/03 23:10

    そうなの!!!!!(めっちゃ声に出してしまった)
    調べてみたらほんとですね。
    http://blog.jnito.com/entry/2012/10/10/074739

    シングルクオートなんて、たしかにわたしもコーディングしなかったら一生入力しないかもしれなかったです。
    JISキーボードにはJISキーボードなりの合理性があるんですね。

    キャンセル

+7

シングルクオート派なので個人的な感覚を述べます。

Pythonはスクリプト言語でシェルスクリプト的に使う場面もあります。そうするとシェルスクリプティングの感覚を引きずるので、「変数展開されない文字列リテラルはシングルクオート」に自然となる感じです。いかがでしょうか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/04 00:50

    おおっ

    キャンセル

  • 2017/05/04 14:11

    最近、Rubyのスタイルガイドを勉強しているのですがRubyの場合は統一すればシングルクォートでもダブルクォートでもどっちを使っても良いことになっているようです。デフォルトでシングルクォートを使っている場合は式展開の時などに限りダブルクォートを使い、デフォルトでダブルクォートを使っているときは文字列中にダブルクォートが含まれる場合などに限りシングルクォートを使うという使い分けが行われます。(私も単純に入力しやすいのでダブルクォートを使っていましたがシングルクォートでは式展開ができなかったんですね。勉強になりました。)

    キャンセル

  • 2017/05/05 00:50

    すごい! 試してみたいけどせっかく環境の構築ができてるのでアップデートしたくないwww

    f'My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'

    これがシングルクオートで囲ってあるのがへんな感じがしてきた!!

    みなさまお知らせありがとうございます♪

    キャンセル

+1

キーボードの配列

日本語配列キーボードでは
Shift+2 => "
Shift+7 => '

英語配列キーボードでは
' => '
Shift + ' => "
('はLの二個右、エンターの一個左)

とシングルクォートのほうが入力しやすかったりします。

CGIのプログラミングの癖

ApacheやnginxみたいなサーバーからCGIとしてPythonコードを呼び出す場合にはHTMLを出力することが多いですが、
"<a href=\"https://google/\"></a>"
'<a href="https://google/"></a>'
どちらが良いかは一目瞭然ですよね。
上の場合は\を毎回つける必要が出てきます。

こういうやり方がルールとして習慣付いてる人がいて、それに倣うひともいるでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/03 11:16

    htmlの例、
    "<a href='https://google/&#039;&gt;&lt;/a&gt;&quot;
    でいいのでこれは理由にならないのでは。

    キャンセル

  • 2017/05/03 11:22

    HTMLでは"の方が一般的という印象があります。
    CGIで一部分だけ作る場合、'だと統一ができない('と"が混在してしまう)のではないでしょうか。
    それならばそれほど手間ではないPython側の文字列リテラルとして'を使う方がコストが低いでしょう。

    キャンセル

  • 2017/05/03 23:06

    ありがとうございます! エスケープするのめんどいですよね!
    HTMLではわたしもあんまり'これ'みたことないです。
    それぞれの時代背景を背負っているんですね。

    キャンセル

checkベストアンサー

0

intelf___さんとほぼ同様の意見ですが,'をベースにした場合,中で"を使えるメリットが大きいと感じています.

例えば文字列中で二重引用符"を使う必要のある可能性が30%であり,一方で一重引用符'を使う必要のある可能性が10%であるとします.
(%の値は適当ですが,"のほうが文章内での可読性が高いため,"と'の大小関係が逆転することは無いと思います)

その場合,二重引用符"派の人の引用符の使い方は7割程度一貫しているのに対し,一重引用符'派の人のほうは9割がた一貫した引用符の使い方でコードを書くことが可能です.一貫性が高いということは,コードの可読性が高いことと対応しますし,例外的な書き方をしなければならない場面で「どっちだっけ??」と時間を食う場面が減ることにもつながると思います.

加えて,一貫性が高いと,一重引用符'の代わりに二重引用符"を使っている箇所に対して,「これは中に一重引用符'を使わなくてはいけないシチュエーションだな」と思ってもらいやすくなります.

要するに,なるべく一貫して書ける方法を選んだ結果,(少なくとも僕の場合は)
一重引用符'のほうが都合が良かった,ということです.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/03 23:11

    なるほど、揃ってるほうが気持ちいいし、
    そこに脳のメモリを割り当てなくて済みますもんね〜!
    エンジニアさんたちのそういう発想がすごく好きです! かっこいい〜。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る