Python 对于函数中的不同内容使用相同的变量是一种好的做法吗
在类似以下的函数中:Python 对于函数中的不同内容使用相同的变量是一种好的做法吗,python,variables,coding-style,Python,Variables,Coding Style,在类似以下的函数中: 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中是一个好的实践吗 这可能会让其他使用相同
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中是一个好的实践吗 这可能会让其他使用相同代码的人感到困惑。一些样式指南也不鼓励为不同目的重用相同的变量名。如果你可以避免,那么你应该这样做,尽管也有很好的理由偏离这条规则。它们真的是一样的吗?一个是项目列表,另一个是值字典,那么它们包含什么呢?如果你能想出一个更具描述性的变量名,那么这是一个好主意。一般来说,不是。当一个变量意味着不止一件事时,它会增加潜在的混淆。另外,如果您曾经不得不重构代码以添加新功能或其他东西,那么您很有可能会使该任务变得更加困难。也就是说,Python是一种鸭子类型的语言,因此,如果它在功能上是相同的,但数据类型不同,那么您可能会选择使用它。应用您自己的判断。如果您觉得两种情况下对象的含义相似,那么使用相同的名称可能会提高可读性。如果您觉得用同一个名称来表示不同的内容令人困惑,请不要这样做。我会说不,因为这样您就更有可能得到意外的结果和恼人的调试。但有时可能有一个特定的原因,这是一个好主意。所以这实际上取决于你在做什么。但只有当不同的事情表现相同时(鸭子打字),我给出的例子有点做作。我面临的实际情况涉及列表与元组。在语义上,它们存储相同类型的数据。但从功能上讲,元组将作为字典中的键进行散列以便于记录,而列表可能会更新,因此添加和删除功能非常方便。当需要键时,不能将列表转换为元组吗?那就只剩下一种情况了。为什么不使用my_list=[]
和my_dict={}
?