在以下功能中:
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中是一个很好的做法吗?
答案 0 :(得分:8)
对于使用相同代码的其他人来说,这可能会让人感到困惑。一些样式指南也不鼓励为不同目的重用相同的变量名称。如果你可以避免它,那么你应该,尽管也有充分的理由偏离这个规则。他们真的是一回事吗?一个是项目列表,另一个是值的字典,那么它们包含什么?如果你能想到一个更具描述性的变量名,那么这是一个好主意。
答案 1 :(得分:4)
一般来说,没有。当变量意味着不止一件事时,它会增加潜在的混淆。另外,如果您必须重构代码以添加新功能或其他内容,则很有可能使该任务更加困难。也就是说,Python是一种鸭子类型的语言,所以如果它在功能上是相同的,但数据类型不同,你很可能会去。
答案 2 :(得分:3)
运用你自己的判断。如果您认为对象的含义在两种情况下都相似,则使用相同的名称可能会提高可读性。如果您觉得对不同的东西使用相同的名称会让人感到困惑,请不要这样做。
答案 3 :(得分:2)
我会说不,因为那样你就有更大的机会获得意想不到的结果和恼人的调试。但有时可能有一个特定的原因,这是一个好主意。所以这真的取决于你在做什么。