我正在尝试用number
在function
内更改change_value
,但是如您所见,它不起作用
def change_value(number):
number += 1
def function():
number = 0
change_value(number)
print(number)
function()
当我运行它时,它打印出0而不是1
答案 0 :(得分:0)
在Python中,所有函数参数均为passed by object sharing。这意味着您可以更改该值(如果它是可变的),但永远不能将另一个值换出(即更改变量的绑定,以使原始变量受到影响)。
数字是不可变的。您无法做到这一点。
如果将数字放在可变容器(例如列表,字典或旨在实现此目的的对象)中,则可以执行以下操作:
def change_value(number_holder):
number_holder[0] += 1
def function():
number_holder = [0]
change_value(number_holder)
print(number_holder[0])
答案 1 :(得分:0)
这里有一些方法可以实现您想要的
def change_value(number):
number[0] += 1
def function():
number = [0]
change_value(number)
print(number[0])
class myNumber:
def __init__(self, n):
self.num = n
def __add__(self, val):
self.num += val
def __repr__(self):
return str(self.num)
def change_value(number):
number += 1
def function():
number = myNumber(0)
change_value(number)
print(number)
答案 2 :(得分:0)
内置类型(int,float,bool,str,tuple,unicode)的对象在python中是不可变的。因此,您可以在这里执行操作,以返回修改后的变量并重新分配它。
代码:
def change_value(number):
number += 1
return number
def function():
number = 0
number = change_value(number)
print(number)
function()
输出:
1
而内置类型的对象((列表,集合,字典)是可变的。
代码:
def change_value(number):
number.append(1)
def function():
number = []
change_value(number)
print(number[0])
function()
输出:
1
答案 3 :(得分:0)
我在您的代码中更改了两行以获得所需的结果:-
def change_value(number):
number += 1
return number # Returning an increamental value
def function():
number = 0
number = change_value(number)
print(number)
function()
输出
1