为什么Python没有整数的'is even'方法,我该怎么办?
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)