web-dev-qa-db-ja.com

Python割り当ての配置(スタイル)

PEP 8で指定されているように、スタイル標準に従うのが本当に好きです。自動的にチェックするリンターがあります。そのため、コードの方がはるかに優れています。

PEP 8には1つのポイントしかありませんが、E251とE221はあまり気分が良くありません。 JavaScriptのバックグラウンドから来て、私は変数の割り当てを次のように調整していました。

var var1        = 1234;
    var2        = 54;
    longer_name = 'hi';

var lol = {
    'that'        : 65,
    'those'       : 87,
    'other_thing' : true
};

そして私の謙虚な意見では、これは読みやすさを劇的に改善します。問題は、これはPEP 8では推奨されないことです。辞書では、コロンの後にスペースが許可されているため、それほど悪くはありません。

dictionary = {
   'something':        98,
   'some_other_thing': False
}

アラインメントなしで変数の割り当てを「生きる」ことはできますが、次のように、関数呼び出しで名前付き引数を渡すことができないのがまったく好きではありません。

some_func(length=      40,
          weight=      900,
          lol=         'troll',
          useless_var= True,
          intelligence=None)

だから、私がやることになるのは、次のように辞書を使用することです:

specs = {
    'length':       40,
    'weight':       900,
    'lol':          'troll',
    'useless_var':  True,
    'intelligence': None
}

some_func(**specs)

または単に

some_func(**{'length':       40,
             'weight':       900,
             'lol':          'troll',
             'useless_var':  True,
             'intelligence': None})

しかし、この回避策は、PEP 8 E251/E221を無視するよりも悪いと感じています。

ベストプラクティスは何ですか?

何年も後に編集

整列しないでください。遅かれ早かれ、より長い新しい変数が登場し、すべてが再び良好に見えるまで、しばらくの間スペースバーをあちこちで押す必要があります。それだけの価値はありません。

29
bgusach

ベストプラクティスは主観的ですが、最も一般的なプラクティスはPEP8に固執することです。

名前付き引数を使用して関数を呼び出すたびに辞書を作成することは絶対にお勧めしません。それはかなり無駄です。あなたのオリジナルの理由がわかりませんsome_func呼び出しは機能しません。関数呼び出しが長くなりすぎて扱いにくくなった場合は、間違いなく行に分割します。しかし、私はそれらを揃えません。推薦の理由は、時間の経過とともにすべての間隔を正しく維持することは非常に苦痛になる可能性があり、コンセンサスはきれいさの向上に対する保守性であったためだと思います。

独自のコードで作業している場合は、誰が気にしますか? PEP8はガイドラインであり、法律ではありません。

17
acjay

したがって、私がやることになるのは、次のように辞書を使用することです。

specs = {
    length:      40,
    weight:      900,
    lol:         'troll',
    useless_var: True,
    intelligence:None
}

IMHO-これは読みにくく(キーを引用せずに有効な構文でした)、たまたまsome_longer_named_varibleを追加したい場合、他のすべての間隔を変更することについていじくり回したいかどうかは本当にわかりません。

私が恐れている弾丸を噛むべきだと思います。

2
Jon Clements

PEP8に固執することをお勧めします。変数の1つの名前を変更する必要がある場合はどうなりますか?自動化されたリファクタリングツールはこれを変更します:

var1        = 1234
var2        = 54
longer_name = 'hi'

これに:

var1        = 1234
var2        = 54
even_longer_name = 'hi'  # not aligned any more!

あなたは物事を調整するためにあなた自身のためにより多くの仕事をすることになるでしょう。

2