10

それで、私は(かなり個人的なキャメルケース表記から)PEP8表記に切り替えようとしていますが、既存の関数/変数が上書きされるケースにどのように取り組んでいるのか疑問に思っていましたか?

たとえば、次のようなものがあります。

open, high, low, close, sum = row

すでに「open」および「sum」関数を上書きします。まず、優れた IDE を使用していなければ、重要な基本機能を上書きしたことにさえ気付かないでしょう。第二に、代わりに変数にどのように名前を付けますか? この例では、ハンガリー語のアプリを使用しており、潜在的な問題はまったく発生していません。

ありがとう!

4

5 に答える 5

10

競合しない名前を選んでみませんか? などopening_priceclosing_priceそしてtotalそれがそれらが表すものである場合。他の応答のように名前空間を修飾することは可能ですが、ローカル変数には必要ありません。どの言語でプログラムする場合でも、予約語を理解するのはあなたの仕事です。それらの多くはありません。

于 2012-01-04T11:52:23.880 に答える
8

と を使用open_sum_ます。

于 2012-01-03T15:25:55.737 に答える
5

この特定のケースでは、namedtuple. data.openこれにより、これらの名前が修飾された名前 ( 、data.lowなど)に変わります。

from collections import namedtuple
Data = namedtuple('Data', ['open', 'high', 'low' 'close', 'sum'])

data = Data(*row)

これにより、組み込み関数と名前が衝突する可能性がなくなり、途中で全体的な読みやすさが向上する可能性があります。

于 2012-01-03T15:26:42.403 に答える
3

それらがすべて同じドメインの値である場合は、辞書を使用できます。

params = ('open', 'high', 'low', 'close', 'sum') # defined once

val = dict(zip(params, row)) # for each row

# val == {'open': 12, 'high': 34, 'low': 56, 'close': 78, 'sum': 90}

次に、それらに直接アクセスできますval['open']。それらを反復処理することができますval.iteritems()

于 2012-01-03T15:27:19.463 に答える