据我所知,整数是不可变的,我怎样才能打印4而不是2?
a = 2
def add(num):
num = 4
print(a)
答案 0 :(得分:0)
似乎这就是你想要实现的目标:
a = 2
def add():
global a
a = 4
add()
print(a)
add()
函数会将a的值更改为4,输出将为4。
答案 1 :(得分:0)
在Python中,变量只是保存值的篮子。如果您希望a
保持不同的值,只需将其放入。就像那样简单。
a = 2 # value
a = 3 # new value
虽然整数2是不可变的,但a
只是对该整数的对象引用。 a
本身 - 对象引用 - 可以随时更改为引用任何对象。
正如您所发现的,您不能简单地将变量传递给函数并更改其值:
def f(a):
a = 4
f(a)
print(a) # still 3
为什么还要3?因为在Python中对象是通过* object reference *传递的。在其他语言中,这既不是与值相同,也不是与引用相同。
函数内部的a
是与函数外部不同的对象引用。这是一个不同的命名空间。如果要更改函数以使其a
是另一个,最终a
,则必须明确指定这是您想要的。
def f():
global a # this makes any following references to a refer to the global namespace
a = 4
f()
print (a) # 4
我强烈推荐this link进一步阅读。