2016-04-27 17 views
3

このコード:私は最初の行に末尾のカンマを忘れてしまったので、三つの値がありこれはなぜ有効なPythonですか?

(-122.43687629699707, -84.63842734729037, 37.8) 

bounding_box = (
    -122.43687629699707, 37.743774801147126 
    -122.3822021484375, 37.8
) 

は、次の値を生成します。意外にも、Pythonはこれを受け入れ、2番目と3番目の数字を一緒に追加します!

数字はstring literal concatenationですが数字ですか?なぜこれが今までの動作になりますか?

答えて

9

何が起こるかは簡単です。以下割り当て

bounding_box = (
    -122.43687629699707, 37.743774801147126 
    -122.3822021484375, 37.8
) 

だから

bounding_box = (-122.43687629699707, **37.743774801147126-122.3822021484375**, 37.8) 

に相当しにおいては、二つの値だけ減算され、ひいては3タプルを生成しています。改行なし

3

、及び明確化のために小数をドロップ:すなわち

bounding_box = (-122, 37 - 122, 37) 

、次いで単項マイナスは減算演算子として解析されたコンマことになったもの。

+0

Yep!これは、リンターを実行する正当な理由です。たとえば、PyCharmは3番目の番号についてこの苦情を示しています: "PEP8:オペレータの周囲に空白がありません"。根本的な原因(カンマがない)には至っていないが、それは少なくとも何かが間違っていることを示唆している。 – danvk

0

改行はありますが、新しい字下げはありません。インデントの問題がないのでエラーを投げず、減算を行うときに改行を認識しない。

テキストをすべてウィンドウ内に保存しようとしている場合はどうすればよいですか?値の間の区切り文字は、改行ではなくコンマです。だから、これが望ましい動作です。

関連する問題