函数 calculate_attribute
没有返回值;它只能通过副作用起作用。
通常在该函数中我必须编写以下几行:
print('some message')
set_attribute(value)
return
所以我决定把它放到一个不同的函数中:
def report_and_set(value, message):
print(message)
set_attribute(value)
现在可以执行以下操作吗:
def calculate_attribute(params):
#...
if something:
return report_and_set(value, message)
#...
if another_condition:
return report_and_set(value, message)
#...
写这个感觉有点奇怪,因为report_and_set
没有返回值。但如果我不这样做,我将不得不在每次调用 report_and_set
后重复键入 return
。
最佳答案
好吧,无论哪种方式,您每次都必须键入 return
。我不确定按照您建议的方式进行操作会获得(或失去)什么,尤其是因为
return
实际上等同于
return None
但我想知道为什么函数中有这些空的 return 语句。有必要吗?可能有更优雅或更易于阅读的方式来处理此函数中的控制流。函数中间的随机 return
很容易被忽略。
更抽象地说,对返回语句进行计数是衡量函数复杂度的一种很好的粗略启发式方法;大多数时候,更多的返回意味着更多cyclomatic complexity .甚至有一种思想流派坚持在任何给定函数中仅使用一次 return
,这是基于经常引用的“单次进入,一次退出”原则。其实,我觉得“单进单出”和“只回一次”是不一样的,在我看来是比较严格的,有时也很繁琐。 (有关更多信息,请参阅 this post ,这表明“只返回一次”是基于对 SESE 的误解)。但是,更少的 return
语句更好的一般原则对我来说仍然是一个很好的原则。
关于python - 调用另一个函数后立即从一个函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146881/