我需要说服自己这是一个坏主意.我想为同一个变量分配第二个名称,其内容可能会发生变化.
A='Bob'
B=A #wrong function, I want to figure out something that works here.
A='Alice'
print A
print B
我希望A和B都打印'Alice',而B打印'Bob',A打印'Alice'.
我为什么要这样做?在我的代码中,我使用一个名称来表示一些数据,这对于处理是有意义的,但是另一个名称对于用户输入是有意义的.argparse似乎想根据命令行选项分配变量名.所以我想在输入数据时使用一个名称,但在处理数据时使用另一个名称.我宁愿避免将一个复制到另一个,但那是我的后备位置.
在Python中,字符串对象是不可变的 - 每次将字符串赋给变量时,都会在内存中创建一个新对象来表示新值.
维基百科关于不变性和特定Python示例的文档.
获得所需行为的一种简单方法是将字符串包装在类中:
class MyClass:
    SomeStr = "Any Val"
A = MyClass
A.SomeStr = "Bob"
B=A
B.SomeStr = "Alice"
print(A.SomeStr)
print(B.SomeStr)
输出:
>>> 
Alice
Alice
所以现在你的B = A赋值创建一个"浅"副本......两个变量A和B指向同一个对象.