【发布时间】:2013-02-08 15:33:21
【问题描述】:
最近我发现自己在一些函数中使用了以下成语:
[...]
def validate(self):
# Possibly do something "expensive" to calculate whether data is valid or not
if data_is_valid:
return ObjectOfSomeSort(validated_data)
return False
ret = self.validate()
if ret:
return ret
[...]
我觉得 ret = ...; if ret: return ret 语法有点笨拙和不符合 Python 标准,但我并不总是能够做类似的事情
if self.validate():
return self.validate()
因为有时我的验证函数包含一些计算量相当大的逻辑。
那么,StackOverflow,有哪些 Python 习语可以解决这类问题;具体来说,我还能如何“有条件地返回”?
【问题讨论】:
-
我必须同意,这完全是非 Python 的,因为我实际上不明白你要做什么......如果很难解释,那是个坏主意:P
-
如果数据无效,我的“验证”函数会返回 False。如果数据有效,我想尽早退出调用函数(调用 self.validate() 的函数);如果不是,我想继续执行流程。
-
嗯,这里的语义似乎有点错误:
self.validate()暗示您要确保 current(!) 对象,又名self有效。 -
是的,你是对的——这就是我的代码所做的——但是我可能有点过度疲劳,并且在表达自己方面做得很差。
-
方法名明显错误。如果对象有效,我希望
validate返回True,否则返回False。