什么是最优雅和pythonic的方式来进行测试,如:
def is_even(n):
return n % 2 == 0
进入逻辑等效(但语法不同)的测试,例如:
if n in even_numbers:
# assert is_even(n)
# ...
我可以想到创建对象even_numbers
的几种方法,但我很想知道是否有一些很好的方法可能会被忽略。
注意:我知道这可能听起来像是一个XY问题,所以我的用例是关于choices
kwarg到argparse.ArgumentParser.add_argument
,是否是会更好地使用它或者使用munge可调用的type
kwarg。
答案 0 :(得分: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