13

コードの行が非常に長い場合、次の行にそれを続けることは可能ですか?

 url='http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|'
+ '100,000|1,000,000&chxp=1,0&chxr=0,0,' +
      max(freq) + '300|1,0,3&chxs=0,676767,13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465&cht=bvs&chco=A2C180&chds=0,300&chd=t:'
4

4 に答える 4

21

私ならこのように書きます

url=('http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|'
     '100,000|1,000,000&chxp=1,0&chxr=0,0,%(max_freq)s300|1,0,3&chxs=0,676767'
     ',13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465'
     '&cht=bvs&chco=A2C180&chds=0,300&chd=t:'%{'max_freq': max(freq)})

+は文字列を結合する必要がないことに注意してください。文字列は実行時ではなくコンパイル時に結合されるため、この方法の方が適しています。

私も%(max_freq)sあなたの文字列に埋め込んでいます。これはdict最後に

urllib.urlencode()URL の処理を​​簡単にしたい場合もチェックしてください。

于 2010-08-03T23:37:11.013 に答える
17

将来どこに助けを求めるか

このような構文上の問題のほとんどはPEP 8で対処されています。この質問に対する回答については、「コード レイアウト」セクションを参照してください。

推奨される方法: (), {}&を使用[]

PEP-8 から:

長い行をラップする好ましい方法は、Python の暗黙の行継続を括弧、ブラケット、およびブレース内で使用することです。必要に応じて、式の周りに括弧のペアを追加できます...

これは、例が次のようになることを意味します。

url= ('http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' +
      '100,000|1,000,000&chxp=1,0&chxr=0,0,' +
      max(freq) + 
      '300|1,0,3&...chco=A2C180&chds=0,300&chd=t:')

別の方法: 使用\

PEP-8 から:

...しかし、バックスラッシュを使用した方が見栄えがする場合があります。継続する行は適切にインデントしてください。

url = 'http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' + \
      '100,000|1,000,000&chxp=1,0&chxr=0,0,' + \ 
       max(freq) + \
      '300|1,0,3&...chco=A2C180&chds=0,300&chd=t:'

連結の回避

文字列の書式設定

この場合、URL で変更したい点は 1 つだけですmax(freq)。これを新しい文字列に効率的に挿入するために、format数値または名前付き引数でメソッドを使用できます。

url = "http://...{0}.../".format(max(freq))
url = "http://...{max_freq}.../".format(max_freq=max(freq))
于 2010-08-03T23:29:43.447 に答える
2

Python は 2 つの文字列リテラルを結合するので、

>>> s = "abc" "def"
>>> s
'abcdef'

ただし、Python は次の行がコマンドの一部であることを認識していないため、2 行にまたがっている場合は機能しません。これを解決するには、バックスラッシュまたはブラケットを使用できます。

>>> s = ("hello, world"
"!")
>>> s
'hello, world!'

+ひもを一緒に取り付ける必要はありません。文字列リテラルの連結max(freq)で説明されているように、 のような非リテラルを追加するには、まだ必要です。これはわずかに効率的ですが、より重要なことはより明確であり、リンクされている Python ドキュメントに示されているように、文字列の一部にコメントを付けることができます。

于 2010-08-03T23:30:50.810 に答える
1

はい、次のようにバックスラッシュを使用します\

url='http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' + \
'100,000|1,000,000&chxp=1,0&chxr=0,0,' + \ 
      max(freq) + '300|1,0,3&chxs=0,676767,13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465&cht=bvs&chco=A2C180&chds=0,300&chd=t:' 

または、括弧で式をラップすることもできます():

url=('http://chart.apis.google.com/chart?chxl=1:|0|10|100|1,000|10,000|' +
'100,000|1,000,000&chxp=1,0&chxr=0,0,' +  
      max(freq) + '300|1,0,3&chxs=0,676767,13.5,0,l,676767|1,676767,13.5,0,l,676767&chxt=y,x&chbh=a,1,0&chs=640x465&cht=bvs&chco=A2C180&chds=0,300&chd=t:') 
于 2010-08-03T23:23:04.300 に答える