【发布时间】:2020-01-04 13:28:19
【问题描述】:
以下被认为是不好的做法:
var = var if 'var' in globals() else None
换句话说,如果有一个定义变量的if 语句,并且我可能需要稍后访问该变量,以使用上述构造,而不是必须将变量定义为None在if 语句之前。
为什么或为什么不能接受上述结构?
一个例子是这样的:
if process == 'yes':
# 100 lines of code
obj = {...}
return Response(obj)
【问题讨论】:
-
你不会对
NameError使用try/except 吗?无论如何,如果对是否定义了变量存在疑问,我认为这并不是一段好的代码。我希望它们被定义,但其值为None。 -
您能举个例子吗?我想不出你无法捕捉到
NameError而不是这个的情况。 -
请参阅我的answer 以了解解决此主题的问题。
-
我真的想不出一个很好的理由,为什么您必须猜测是否定义了变量。究竟是什么用例?对我来说,这是主要的代码异味。
-
"...而不必在 if 语句之前将变量定义为 None。"不过,这不是更清洁、更简单吗?
标签: python python-3.x