我正在开发一个个人API项目,该项目涉及接受包含许多必需关键字的请求。因此,我发现自己在防御性地编写了大量代码,如下所示:
def post(self, urlSafeKey=None):
if urlSafeKey:
# do a bunch
# of stuff
# here
else:
self.abort(400, detail="A key parameter is required")
为了便于阅读,我被告知更喜欢if - else
而不是if not
测试底片,但是当我通过并将所有这些块更改为类似的内容时......
def post(self, urlSafeKey=None):
if not urlSafeKey: self.abort(400, detail="A key parameter is required")
# do a bunch
# of stuff
# here
......它看起来更清洁,更短,但我担心这是一种讨厌的风格习惯,最后可能不太清楚。
在Python世界中对此有共识吗?
答案 0 :(得分:2)
一般来说,遵循最佳做法是best practice
。我不推荐在线发言。但我认为not urlSafeKey
的测试没有错。
def post(self, urlSafeKey=None):
if not urlSafeKey:
self.abort(400, detail="A key parameter is required")
# do a bunch
# of stuff
# here
答案 1 :(得分:2)
假设self.abort
引发异常(从而终止函数post
),我认为最好避免将正常情况代码嵌套在if
中。 import this
在一个交互式口译员的提示下,提醒人们注意“禅宗的禅宗”,其中一个是“扁平比嵌套更好”: - )。
至于单线
if not urlSafeKey: self.abort(400, detail="A key parameter is required")
我的个人品味有点长 - 我更喜欢if
- 基于一个衬垫仅限于非常简短的案例,例如if cond: return
,if cond: continue
,{{ 1}},否则使用两行。但这是一个小问题(纯粹的词汇!)问题,而不是更喜欢避免嵌套(即检查“我已经完成”条件并在你知道完成时退出函数或循环),是 Python-Zen级问题! - )