2016-04-15 16 views
0

私はdoctestのでコードをテストしていると私はこのようにテストの前にコメントしたい:にSyntaxError:行継続文字の後に予期しない文字

Tests: 
>>> part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\ #False, 1, 0 
    ('Ana', 'Toquio', 21098, '06-12', 1182),\ 
    ('Ana', 'Sao Paulo', 21098, '04-12', 1096)]) 
    [2, 1] 

の問題は、私はシェルでコードを実行するとそれは私にsynthaxエラーを与える:

File "/home/user/Desktop/file.py", line 44, in __main__.part 
Failed example: 
    part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\  #False, 1, 0 
Exception raised: 
    Traceback (most recent call last): 
     File "/usr/lib/python2.7/doctest.py", line 1315, in __run 
     compileflags, 1) in test.globs 
     File "<doctest __main__.part[2]>", line 1 
     part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\  #False, 1, 0 
                       ^
    SyntaxError: unexpected character after line continuation character 

答えて

5

あなたが行継続文字\を置くことはできません。あなたは、バックスラッシュの後のコメントがあります:[2, 1]スライスの一部であることを確認するために余分な\part(..)コールの後

part([('Eva', 'Sao Paulo', 21098, '04-12', 1182),\ 
    ('Ana', 'Toquio', 21098, '06-12', 1182),\ 
    ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])\ 
    [2, 1] 

注:

... \  #False, 1, 0 

は、コメントを削除し、改行は直接\に従わなければならそれ!リファレンスドキュメントのExplicit line joining sectionを参照してください:

A line ending in a backslash cannot carry a comment. [...] A backslash is illegal elsewhere on a line outside a string literal.

しかし、あなたはすべての括弧と括弧が閉じられるまでの論理行が自動的に拡張され、括弧内のすべてので行継続文字を使用する必要はありません。

part([('Eva', 'Sao Paulo', 21098, '04-12', 1182), # False, 1, 0 
     ('Ana', 'Toquio', 21098, '06-12', 1182), 
     ('Ana', 'Sao Paulo', 21098, '04-12', 1096)])[2, 1] 

論理行を拡張するために、括弧に頼るときコメントを含めることができます。 Implicit line joining sectionから

Expressions in parentheses, square brackets or curly braces can be split over more than one physical line without using backslashes. [...] Implicitly continued lines can carry comments.

+0

しかし、私は、バックスラッシュ(\)を削除した場合、このエラー中には表示されます。 にSyntaxError:予期しないEOFをini_9 @ –

+0

を解析中:私の答えのコードには、このような構文エラーがありません。 ')'や ']'を削除したようです。 –

関連する問題