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
我这么做了吗?
答案 0 :(得分:1)
创建本地函数或使用lambdas通常没有问题 - 我通常会在他们使意图更清晰的时候这样做。
但是,将这类专用函数作为核心语言的一部分通常是不必要的,并且添加诸如全局/内置函数(或甚至作为特定类型的方法)倾向于沿着臃肿的核心路走下去:例如为什么不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(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()