2012-04-03 6 views
1

は、これらの2つの文字列なぜこれを誤って解釈するのではなく、SyntaxErrorをスローしないのですか?

foo = ['dumb' 
'error'] 

しかし、あなたはカンマを忘れてしまった場合、それはだけではなく、構文エラーを生成する一緒に文字列をマージする間にコンマことになっている存在。あなたの結果は

['dumberror'] 

です。 Pythonインタプリタがこれらの文字列をマージするのはなぜですか?

+0

これは言語の[文書挙動(http://docs.python.org/reference/lexical_analysis.html#string-literal-concatenation)です。なぜそれが言語の文書化された振る舞いであるかに関して、Guidoに尋ねる。 – kindall

+0

どのようなpythonのバージョンですか? – PenguinCoder

答えて

6

文字列リテラルを含むソースコードでのより良い書式設定を可能にするための文書化された機能です。

複数の隣接する文字列またはバイトリテラル(空白で区切られています)が許可され、その意味は連結と同じです。したがって、 "hello" "world"は "helloworld"と同等です。この機能を使用して、必要なバックスラッシュの数を減らし、長い文字列を便利に長い行に分割したり、文字列の一部にコメントを追加したりすることができます。

Source

また、このノートを覚える価値がある:

(注)この機能は、構文レベルで定義されていますが、コンパイル時に実装されていること。実行時に文字列式を連結するには、 '+'演算子を使用する必要があります。また、リテラル連結では、各構成要素に異なる引用スタイルを使用できます(生の文字列と三重引用符付きの文字列を混合する場合もあります)。

+2

私は間違った方向からこの機能に間違いなく到着しました:) – Nathan

関連する問題