0

什么是最优雅和最 Pythonic 的测试方式,例如:

def is_even(n):
  return n % 2 == 0

进入逻辑等效(但语法不同)的测试,例如:

if n in even_numbers:
  # assert is_even(n)
  # ...

我可以想到几种创建对象的方法even_numbers,但我很想知道是否有我可能忽略的好方法。


注意:我知道这可能听起来像一个 XY 问题,所以我的用例是关于choiceskwarg to argparse.ArgumentParser.add_argument,以及使用它是否会更好,或者替代可调用的typekwarg。

4

1 回答 1

1

我会even_numbers变成一个容器类型:

class EvenNumbers(object):

    # Add other container methods as needed

    def __contains__(self, value):
        return value % 2 == 0

even_numbers = EvenNumbers()

然后,

>>> 3 in even_numbers
False
>>> 4 in even_numbers
True
于 2012-12-11T06:02:00.210 回答