Python变量赋值的行为标量与复合

时间:2014-01-20 20:24:44

标签: python variables

有人可以解释python中的变量赋值吗?我知道变量被标记到内存中的某个位置,因此可以将多个变量标记到同一位置。

这有什么影响?除了改变复合数据类型,从而改变所有指向变量,还有其他吗?

在不改变复合数据类型时是否存在相关的情况?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为这个问题对于SO格式来说有点过于宽泛。 “对同一个对象进行多次引用可以做的事情”的空间很大。但是,无论如何,除了对可变数据类型进行多次引用之外,还有更多可能的用法(和滥用)。

例如,您可以有用地对维护状态的对象(如生成器)进行多次引用,并按顺序访问引用,也许可以对每个引用执行不同的操作。一个经常出现的“可爱技巧”是将以下方法“嵌入”可迭代成n件:

s = 'this is a string'

its = [iter(s)] * 2

zip(*its)
Out[17]: 
[('t', 'h'),
 ('i', 's'),
 (' ', 'i'),
 ('s', ' '),
 ('a', ' '),
 ('s', 't'),
 ('r', 'i'),
 ('n', 'g')]

显然你不需要能够对同一个迭代器进行多次引用来完成这个任务,但python允许你这样做。如果你想要“描述”类似文件的对象,或者那些沿着这些方向的东西,这种方法可能很有用。

至于“陷阱”,或者你需要注意的事情,他们大多是关于同一问题的即兴演奏。 python编程FAQ中的How do I make a multidimensional list很好地涵盖了它。