0

私はこれをたくさんやっていることに気づきます。例は単純ですが、実際には、2番目の再帰が呼び出されないデータ構造と条件を更新するための複雑な割り当てがたくさんあります。

メッシュデータを使用しています。ポイント、エッジ、および面は別々の辞書に保存され、「ポインタ」(dictキー)が頻繁に使用されます。

import itertools

class Demo(object):
    def __init__(self):
        self.a = {}
        self.b = {}
        self.keygen = itertools.count()

    def add_to_b(self, val):
        new_key = next(self.keygen)
        self.b[new_key] = val
        return new_key

    def recur_method(self, arg, argisval=True):
        a_key = next(self.keygen)
        if argisval is True:
            # arg is a value
            b_key = self.add_to_b(arg)
            self.a[a_key] = b_key
            self.recur_method(b_key, argisval=False)
        else:
            # arg is a key
            self.a[a_key] = arg

demo = Demo()
demo.recur_method(2.2)

もっと良い方法はありますか?すべての割り当てコードを7つの異なるメソッドに分割するのに足りませんか?とにかくこれについて心配する必要がありますか?

4

1 に答える 1

1

試す

def recur_method(self, key=None, val=None):
    if key is None and val is None:
       raise exception("You fail it")

が有効な入力の場合None、ガード値を使用します。

sentinel = object()
def recur_method(self, key=sentinel, val=sentinel):
    if key is sentinel and val is sentinel:
       raise exception("You fail it")
于 2012-11-26T20:51:22.700 に答える