有条件地设置并有条件地使用变量python

时间:2010-08-11 00:33:31

标签: python convention

我知道有条件地声明一个变量是不好的约定/设计。即:

if some_boolean:
   x = 1

其中x未在其他任何地方声明。但是,如果只是满足条件,如果你以后只使用它,有条件地声明一个变量是不是很糟糕?

if some_boolean and some_other_boolean:
   x+=1

3 个答案:

答案 0 :(得分:2)

这是一种可疑的风格,因为它很容易出现基于对未来维护者的不完美,公正理解的错误。我还认为最初将变量设置为None(除非知道更多有用的值)有助于提高可读性,部分原因在于它为您提供了一个自然的位置来记录带有注释的所有变量(而不是传播)这些评论遍布整个地方,这使他们很难找到; - )。

答案 1 :(得分:1)

如果您的代码看起来像这样

if some_boolean:
   x = 1
# some actions
# not changing some_boolean
# but calculating some_other_boolean
# ...
if some_boolean and some_other_boolean:
   x+=1

可以重构

def some_actions(some_args,...):
#...
def calculate_some_other_boolean(some_other_args,...):
#...
if some_boolean:
    x = 1
    some_actions(some_args,...)
    if calculate_some_other_boolean(some_other_args,...):
        x+=1
else:
    some_actions(some_args,...)

答案 2 :(得分:0)

从一个非常简单的设计角度来看,我只是将布尔值默认为false,即使它稍后可能不会被使用。这样,所讨论的布尔值不是可能定义的,或者可能实际上是一个布尔值,并且如果 被使用,它有一个适当的价值。

如果您将两个或三个布尔值设置为false并且它们永远不会被使用,那么在大局观中它不会产生任何显着差异。但是,如果您有多个,则可能表明存在设计问题。