Python中不同类型的相同变量名称

时间:2014-08-25 15:17:12

标签: python dynamic-typing

我发现自己做了很多这样的事情:

msg = ['This', 'is', 'a', 'message']  # (or built up programmatically)
msg = ' '.join(msg)

将变量msg的类型从list更改为str,这是像Python这样的动态类型语言所允许的。不过这是个好主意吗?这里的任务并不紧密,但是如果msg在广泛分布的代码中以两种不同的形式使用,那该怎么办?

2 个答案:

答案 0 :(得分:4)

  

但是如果msg在广泛分布的代码中以两种不同的形式使用会怎么样?

你已经击中了头上的钉子。使用相同的参考名称只是为程序员添加了一件事,以便在扫描代码时记录下来 - 仅仅因为这个原因,使用不同的名称会更好。

我个人使用类似的东西:

msg = ['This', 'is', 'a', 'message']
msg_str = ' '.join(msg)

答案 1 :(得分:1)

我的建议是,您只在代码中填写您实际打算做的事情,而不是其他内容。如果你考虑一下你的例子,它实际上做了什么?

第一行采用一个值(特别是一个列表)并在其上放置一个标签,因为正如Sylvain Leroux在评论中提到的那样,实际上这是一个变量。然后,在第二行中,您使用该值创建另一个值(此时为字符串),然后 - 这是重要的部分 - 您将标签从第一个值中取出并将其放在第二个值上。

这真的是你想做的吗?基本上,第一个值(列表)是您真正需要的最终值的一次性中间步骤,并在其工作完成时被丢弃。在这种特殊情况下,代码可以很容易地写成:

msg = ' '.join(['This', 'is', 'a', 'message'])

另一方面,如果你真的需要两个不同的值,一个基于另一个,在代码中的其他地方独立使用,那么无论如何都要创建一个不同的变量名,如martin Konecny所建议。

这里重要的是要记住,变量实际上是应用于不同值的标签,可以从一个值移开并分配给另一个值。实际上,使用几个不同的“标签”标记“标记”值是非常标准的;即为多个变量分配相同的值。这里重要的一点是值,而不是变量,它只是命名空间中的标签。

相关问题