3

在如下函数中:

def foo(case):
    if case == 1:
        my_var = []
        # then do something with my_var
    elif case == 2:
        my_var = {}
        # then do something with my_var

由于变量my_var存在于不同的情况下,所以它不应该在运行时引起问题。但这是 Python 中的一个好习惯吗?

4

4 回答 4

8

对于使用相同代码的其他人来说,这可能会让人感到困惑。一些风格指南也不鼓励将相同的变量名用于不同的目的。如果你可以避免它,那么你应该避免它,尽管也有很好的理由来偏离这条规则。他们真的是一回事吗?一个是项目列表,另一个是值字典,那么它们包含什么?如果您能想到一个更具描述性的变量名称,那么这是一个好主意。

于 2012-06-06T17:47:57.520 回答
4

一般来说,没有。当一个变量意味着不止一件事时,它会增加潜在的混乱。另外,如果您必须重构代码以添加新功能或其他内容,那么您很有可能使该任务变得更加困难。也就是说,Python 是一种鸭子类型语言,所以如果它在功能上是相同的,但数据类型不同,那么你可能会很高兴。

于 2012-06-06T17:48:10.363 回答
3

应用你自己的判断。如果您觉得这两种情况下对象的含义相似,则使用相同的名称可能会提高可读性。如果您觉得对不同的事物使用相同的名称会造成混淆,请不要这样做。

于 2012-06-06T17:48:28.867 回答
2

我会说不,因为那样你就有更大的机会得到意想不到的结果和烦人的调试。但有时可能有一个特定的原因,这是一个好主意。所以这真的取决于你在做什么。

于 2012-06-06T17:48:36.903 回答