Python 定义特定于条件的变量是否是一种良好的做法

Python 定义特定于条件的变量是否是一种良好的做法,python,algorithm,variables,conditional-statements,naming-conventions,Python,Algorithm,Variables,Conditional Statements,Naming Conventions,假设我有这样一个程序(python,但这是一个算法问题): 改为修改var是否正确/良好的设计实践,例如: if boolean == true: commonvar = process1() var_true = "foo" else: commonvar = process2() var_false = "bar" result = intermediate_process (commonvar) if boolean == true: print

假设我有这样一个程序(python,但这是一个算法问题):

改为修改var是否正确/良好的设计实践,例如:

if boolean == true:
    commonvar = process1()
    var_true = "foo"
else:
    commonvar = process2()
    var_false = "bar"
result = intermediate_process (commonvar)
if boolean == true:
     print ("training of {} :{}".format (var_true, result)
else :
     print ("testing of {} :{}".format (var_false, result)
我想说的是,这样做的一个优点是,您可以很容易地看到算法中的“路径”属于var,并且新变量名称可能更相关(特别是在实际情况下,当原始变量名称为“var”时,向现有算法添加条件时)可能有意义且与算法中的原始路径相关,也可能与新算法中的相同路径相关,但可能对次添加路径没有意义/相关。
在错误的一端,我认为它可能更容易产生bug,因为如果您引用一个尚未定义的名称,编译器或程序在执行过程中将抛出异常。
这就是说,这也可以被视为一个优势,因为它更容易匹配变量的路径


你怎么看?事实上,命名约定通常是为了配合良好的设计而定义的,但我认为问题比这更大,因此它不是专门基于python的(我只是使用它,因为它对于理解编程/英语的任何人来说都是可读的).

我认为第一个例子是定义变量的更好方法。它更容易调试,而且因为它是由if/else子句设置的,所以它作为一个公共变量更有意义

声明的变量数量越多,需要的空间就越大,因为这个特定的问题可以用一个变量来处理,所以第一个设计成功。关于由于没有定义错误而潜入的部分[这是错误的代码原则]将变量初始化为适合您的算法的值,如果该变量与foo或bar不匹配,则在后续代码中捕获该变量,这意味着代码中出现了其他问题。

如何:

print(f"training of foo :{intermediate_process(process1())}" if boolean else
      f"testing of bar :{intermediate_process(process2())}")

我认为这要清楚得多,并且不需要您记住代码前面定义的奇怪变量。我知道在更高级的情况下,您不可能将其简化为如此简单的一行,但如果没有具体的示例,就很难讨论什么是“最佳实践”。我想不出一种方法,在这种方法中,占位符的名称(如中间和)不是很明显,或者添加太多变量实际上会失去清晰度。

使用
if boolean
而不是
if boolean==True
。感谢你的想法,实际上我写了“intermediate\u process”在我遇到这种情况时,你让我意识到我确实可以有效地使用这个函数,而我将它视为无用而丢弃,因为它会使代码越来越混乱。不客气。^ ^根据我的经验,优化代码的可读性并不是只有一个永远正确的答案,来自di的人们不同的学科有不同的惯例和风格。但是如果你把你的代码看作是一种叙述,并且记住人们在同一时间只能在头脑中掌握几个变量,那么人类的直觉可以让你在编写可访问的代码方面走很长的路。
print(f"training of foo :{intermediate_process(process1())}" if boolean else
      f"testing of bar :{intermediate_process(process2())}")