題名のとおりです。
python と javascriptを 勉強しているのですが、このふたつの言語について
” と ’ で違いが出ることはあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
PythonとJavaScriptについては、文字列中に「"
」や「'
」自身があるときに、エスケープの必要があるかどうかが唯一の相違点です。
Python
1'シングル\'とダブル"の違い' == "シングル'とダブル\"の違い"
どちらも、文字列としては「シングル'とダブル"の違い
」になりますが、それぞれの中で同じ引用符を使う場合は\
でエスケープが必須です。しかし、異なる引用符はエスケープする必要はありません。文字列中に引用符を多用するような場合は、異なる引用符で囲む場合が多いです。
Python
1tertail_a = '<a href="https://teratail.com/">teratail</a>'
上のような例では"
を使うとエスケープが多くなり見にくくなります。それ以外の場合は、コーディングスタイルでどちらかに統一する場合が多いです。どちらに統一するかは採用するコーディングスタイルによってバラバラであるため、良い悪いは無いと思われます。
以下、蛇足です。
上の話はPythonとJavaScriptについてだけであることに注意してください。他の言語では事情はそれぞれ異なります。例えば、CやJavaなどでは、"
は同じく文字列(string)のリテラルですが、'
は文字(character)のリテラルであり、意味が全く異なります。PHPやRubyですと、どちらも文字列ではあるのですが、"
では変数展開等ができる(PHPとRuby)、'
では\n
等のエスケープシーケンスが使えない(PHP)、と言ったように動作が異なります。それらの特性を考えて使い分ける場合が多いです。
投稿2017/10/31 21:50
総合スコア21735
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
JavaScript については、特に区別が無いと思います。
【文法とデータ型 - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#String_literals
文字列リテラルとは、0 個以上の文字を二重引用符 (") または単一引用符 (') でくくったものです。
投稿2017/10/31 17:51
総合スコア69407
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/31 17:55
2017/10/31 17:58
2017/10/31 21:59
0
註:JavaScriptは書けないので、下記はPythonに関する回答です。
**『どちらを用いるべきか?』**という疑問は、私も持っています。
**『どちらを用いても問題ないか?』**という疑問でしたら、下記のとおり問題ないです。
特段の事情がない限りは、好みで選んでいいんじゃないでしょうか。
本文
Pythonに関しては、次のように定義されているので差はないと思います。
2.4.1. 文字列およびバイト列リテラル
文字列リテラルは以下の字句定義で記述されます:stringliteral ::= [stringprefix](shortstring | longstring) stringprefix ::= "r" | "u" | "R" | "U" | "f" | "F" | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF" shortstring ::= "'" shortstringitem* "'" | '"' shortstringitem* '"' longstring ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""' shortstringitem ::= shortstringchar | stringescapeseq longstringitem ::= longstringchar | stringescapeseq shortstringchar ::= <any source character except "\" or newline or the quote> longstringchar ::= <any source character except "\"> stringescapeseq ::= "\" <any source character>
引用元:Python 言語リファレンス - 2.4.1. 文字列およびバイト列リテラル
上記リンクはPython3ですが、Python2.7でも同様の定義でした。■
私の場合、短文にはシングルクォートを、三重文字列(長文)にはダブルクォートを用いています。
強いて理由を挙げるなら、『他の言語と衝突しづらい気がする』からでしょうか。
Python
1>>> print(r'printf("%d\n", 10);') 2printf("%d\n", 10); 3>>> 4>>> print("printf(\"%d\n\", 10);") # この場合raw文字列使えない。しんどい。 5printf("%d\n", 10);
三重文字列でダブルクォートを用いている理由は、ないです。
ダブルクォートでなければいけないと信じ込んでいた時期があったので、その名残です。
追記:11/17
たまたまPEPを眺めているときにこれに関する記述を見つけましたので、引用します。
PEP 8 -- Style Guide for Python Code - String Quotes
In Python, single quoted strings and double quoted strings are the same. This PEP does not make a recommendation for this. Pick a rule and stick to it. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. It improves readability.
For triple quoted strings, always use double quote characters to be consistent with the docstring convention in PEP 257.
- 基本的にはどちらでもよいが、統一すべき
- ただし、エスケープが求められる場合はその限りでない
- 三重引用符を用いるときは、docstringに倣ってダブルクオートを使う
なお、こちらが日本語版です。あんまりいい翻訳だと思いませんが...
PEP 8 -- Python コードのスタイルガイド - 文字列に含まれる引用符
投稿2017/10/31 17:30
編集2017/11/17 12:17総合スコア35660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。