当我运行以下程序时,它会打印“2”然后打印“1”,而我希望它打印“2”然后打印“2”。我做错了什么?
def thingy(a):
a= a + 1
print(a)
return a
a=1
thingy(a)
print(a)
如果您能提供帮助,非常感谢。
请您参考如下方法:
您还没有在全局范围内重新分配 a 变量。全局范围内的 a 变量与函数中的不同。为了更清楚,请看这个:
def thingy(arg):
arg = arg + 1
print(arg)
return arg
a=1 # Assign a to 1
thingy(a) # Do some work without altering variable
print(a) # Print a, which is 1...
a = thingy(a) # Here, a will be equals to two now.
具有全局选项
您还可以通过在函数开头添加 global a 来编辑全局范围,并且不要向函数传递任何参数:
def thingy():
global a
a= a + 1
print(a)
return a
a=1
thingy()
print(a)
但更喜欢第一种方法,更干净。
