为什么Python没有整数的“偶数”方法,我该怎么做呢?

时间:2014-04-24 04:52:49

标签: python methods coding-style

Python没有' is_even'方法或整数的任何类型。

为什么会这样?

另外,为了便于阅读,我应该在代码中编写is_even函数吗?

例如:

if integer_value % 2 == 0:
    # Do something

目前还不清楚应该做什么。

虽然这很容易理解:

if is_even(integer_value):
    # Do something

然而,这意味着我必须在我想要的地方编写一个is_even函数。

def is_even(integer):
    if integer % 2 == 0:
        return True
    else:
        return False

什么是更好的选择?代码本身是否可读且具有明显的目的,或者到处都有评论?

引用最近正在进行回合的博客条目:

"请注意这种方法比使用注释更强大。如果更改逻辑,则会立即施加压力以更改变量名称。评论不是这样。我同意DHH,评论是危险的并且倾向于腐烂 - 更好地编写自我记录代码。" - http://peternixey.com/post/83510597580/how-to-be-a-great-software-developer

我这么做了吗?

2 个答案:

答案 0 :(得分:1)

创建本地函数或使用lambdas通常没有问题 - 我通常会在他们使意图更清晰的时候这样做。

但是,将这类专用函数作为核心语言的一部分通常是不必要的,并且添加诸如全局/内置函数(或甚至作为特定类型的方法)倾向于沿着臃肿的核心路走下去:例如为什么不is_primeis_natural

def do_my_stuff(numbers):
    def is_even(i):
        return i % 2 == 0

    # use is_even, where it can be trivially referenced above
    return map(numbers, is_even)

答案 1 :(得分:1)

创建一个包含所有常用功能的实用程序模块,并仅在此处添加注释。稍后,在任何需要的地方导入实用程序模块并调用这些函数。因此,您不会多次编写相同的功能,并且易于维护。

此外,您的is_even可以像这样缩短

def iseven(number):
    """
    Checks if a number is even or odd

    >>> iseven(5)
    False
    >>> iseven(6)
    True
    """
    return number % 2 == 0

if __name__ == "__main__":
    import doctest
    doctest.testmod()