有人可以解释python中的变量赋值吗?我知道变量被标记到内存中的某个位置,因此可以将多个变量标记到同一位置。
这有什么影响?除了改变复合数据类型,从而改变所有指向变量,还有其他吗?
在不改变复合数据类型时是否存在相关的情况?
谢谢
答案 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很好地涵盖了它。