【发布时间】:2010-09-01 14:52:58
【问题描述】:
我的 Python 变量发生了什么? old_pos 似乎与pos 相关联:
代码:
pos = [7, 7]
direction = [1, 1]
old_pos = pos
print 'pos = '+str(pos)
print 'old_pos = '+str(old_pos)
pos[0] += direction[0]
pos[1] += direction[1]
print 'pos = '+str(pos)
print 'old_pos = '+str(old_pos)
输出:
pos = [7, 7]
old_pos = [7, 7]
pos = [8, 8]
old_pos = [8, 8]
但是,如果我将old_pos = pos 替换为old_pos = tuple(pos) 甚至old_pos = list(pos),我不会遇到这个问题:
pos = [7, 7]
old_pos = [7, 7]
pos = [8, 8]
old_pos = [7, 7]
【问题讨论】:
-
是的,
=就是这样做的。 :-) -
python中没有变量,只有名称和对象。
-
@hop:但是名字不是引用变量吗?
-
@recursive:这取决于您如何定义“变量”,但如果您不认为 Python 名称与变量相同,通常会更容易考虑。见:python.net/crew/mwh/hacks/objectthink.html
-
“Python 中没有变量”是一个愚蠢而令人困惑的口号。您的意思是,“Python 中的变量的工作方式与 C 中的不同。”
标签: python list variables reference tuples