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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

Q&A

解決済

4回答

19446閲覧

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

hacosato

総合スコア48

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

0グッド

2クリップ

投稿2017/05/03 00:40

Pythonの初学者です!

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

PEP8を見ると、

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

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

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

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

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

投稿2017/05/03 02:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hacosato

2017/05/03 14:10

そうなの!!!!!(めっちゃ声に出してしまった) 調べてみたらほんとですね。 http://blog.jnito.com/entry/2012/10/10/074739 シングルクオートなんて、たしかにわたしもコーディングしなかったら一生入力しないかもしれなかったです。 JISキーボードにはJISキーボードなりの合理性があるんですね。
guest

0

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

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

投稿2017/05/03 01:11

編集2017/05/03 02:04
yuba

総合スコア5570

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hacosato

2017/05/03 02:05

シェルスクリプト! 詳しくないけどなんかそんな気がします!! でもたとえばRubyも似た立ち位置だと思いますが、Rubyはダブルクオートを使いますよね? なにか違いあるのかなぁと思いまして。
yuba

2017/05/03 02:13

Rubyのダブルクオート文字列は式展開ができてシングルクオートは式展開がないので、これもシェルスクリプトと同じってことになりませんか。 Pythonは文字列リテラルの変数展開がないので、シングルクオートで書く分にはこれらと同じように読める、と。
hacosato

2017/05/03 14:04

式展開ってわかってなかったですけど、#{kore}のことですね! 便利! 話はそれますが、同じ機能がPythonにもあればいいのにって思います。 .formatするのめんどいですよね…。
yuba

2017/05/03 14:06

ほんとに。なんでないんでしょうね。
yuba

2017/05/03 15:50

おおっ
退会済みユーザー

退会済みユーザー

2017/05/04 05:11

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

2017/05/04 15:50

すごい! 試してみたいけどせっかく環境の構築ができてるのでアップデートしたくないwww f'My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.' これがシングルクオートで囲ってあるのがへんな感じがしてきた!! みなさまお知らせありがとうございます♪
guest

0

キーボードの配列

日本語配列キーボードでは
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 02:12

intelf___

総合スコア868

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuba

2017/05/03 02:16

htmlの例、 "<a href='https://google/'></a>" でいいのでこれは理由にならないのでは。
intelf___

2017/05/03 02:22

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

2017/05/03 14:06

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

0

ベストアンサー

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

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

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

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

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

投稿2017/05/03 07:34

MasatakaMiyoshi

総合スコア109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hacosato

2017/05/03 14:11

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問