为什么Python没有整数的'is even'方法,我该怎么办?

1 投票
2 回答
2705 浏览
提问于 2025-04-18 04:02

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 个回答

2

创建一个工具模块,把所有常用的函数放在里面,并只在这里写下你的注释。之后,在需要用到这些函数的地方导入这个工具模块,然后调用这些函数。

这样做的好处是,你就不用重复写同样的函数了,维护起来也变得简单。

另外,你的 is_even 函数可以这样简化:

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

    Examples:
        >>> iseven(5)
        False
        >>> iseven(6)
        True
        >>> iseven(6.0)
        True
        >>> iseven(5.5)
        False
    """
    return number % 2 == 0

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

通常,创建局部函数或者使用匿名函数(也叫做lambda)是没有问题的,我也经常这么做,因为这样可以让代码的意图更加清晰。

不过,把这类专门的函数变成核心语言的一部分通常是没必要的。如果把它们作为全局函数或者特定类型的方法添加进去,往往会导致语言核心变得臃肿。比如,为什么不也加上is_prime(判断是否为质数)或者is_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(is_even, numbers)

撰写回答