なぜPythonのすべての文字列リテラルが一重引用符に評価されますか?なぜPythonのすべての文字列リテラルが一重引用符に評価されますか?
'a', "a", """a"""
すべては、インターアクティブシェルに
'a'
に評価されます。
なぜPythonのすべての文字列リテラルが一重引用符に評価されますか?なぜPythonのすべての文字列リテラルが一重引用符に評価されますか?
'a', "a", """a"""
すべては、インターアクティブシェルに
'a'
に評価されます。
文字列の内容との表現を区別する必要があります。
リテラル'a'
、"a"
と"""a"""
すべてが同じ列を表します。つまり、その文字列を割り当てた後、次のようになります。
t = "a"
Pythonは文字列の入力方法を覚えていません。さらに、文字列:
t = "a"+'b'
結果の文字列は、'ab'
ある:NO「オリジナルリテラル」は、単に存在しません。
これで、端末の変数(または式)を照会しました。端末は内部的にrepr(..)
メソッドを呼び出します。だから、基本的に、あなたが書かれている:
repr("a")
今、Pythonは__repr__
メソッドを呼び出し、文字列内の単一引用符がある場合、その方法は、検査します。そうでない場合、文字列は一重引用符で表されます。そうでない場合は、二重引用符で表すことができます。たとえば、
>>> "'a'"
"'a'"
repr(' a ')は' a 'を生成しませんか?新しい "ab"リテラルに加えて、 "a"と "b"はまだメモリに残っていますか? – pypyad
@pypyad: 'repr( 'a')'は** content ''a'' **の文字列を生成し、' 'a'''と' 'b'''がメモリに残っているかどうかはPythonインタプリタが決定するものです。それは指定されていません。 –
すべてのUnicodeリテラルは''
を使用して印刷されるわけではありません、ポイントでの場合、あなたはこれらを混ぜた場合、Pythonはそれを表現するために、適切な見積書を使用します。
>>> "'a'"
"'a'"
""" """
ない(""
オーバー''
を選択するものは少ないので、見積もりが混在していない場合の判読は、おそらく非常に早い段階で行われた決定であり、その背後には重大な理由はありません。
Pythonは常に"
上'
を選択し、"""
時にそれができる以上の方:
>>> """'a'"""
"'a'"
とその背後に何の「特別な」理由はありません。
Lol、正確に同じ反例を示しました:) –
これらは**同じ**リテラルなので、引用符は文字列自体の一部ではありません。通訳者はあなたが文字列をどのように入力したのかわかりません。 –
'' 'a' ''があなたに与えるものを見てください –