Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用参数更改函数中的变量_Python - Fatal编程技术网

Python 使用参数更改函数中的变量

Python 使用参数更改函数中的变量,python,Python,我真的不知道如何通过使用带参数的函数来增加变量。下面的代码打印0和1,我理解为什么,但我不知道如何修复它。它只是一个代码的一般“形状”,所以可以有任意数量的变量。如果你看一看,我会很感激的 i=0 b=0 def increase(a): print(a) a+=1 print(a) for e in range (3): increase(i) increase(b) 有一个有点长的讨论围绕着为什么你不能以你试图做的方式去做你想做的事情,但是被接受的答

我真的不知道如何通过使用带参数的函数来增加变量。下面的代码打印0和1,我理解为什么,但我不知道如何修复它。它只是一个代码的一般“形状”,所以可以有任意数量的变量。如果你看一看,我会很感激的

i=0
b=0
def increase(a):
    print(a)
    a+=1
    print(a)
for e in range (3):
    increase(i)
    increase(b)

有一个有点长的讨论围绕着为什么你不能以你试图做的方式去做你想做的事情,但是被接受的答案应该对你有用。实际上,Python中的所有参数都是通过对象引用传递的,因此,如果使用参数名称重新分配函数中的值,则不会更改传递给函数的变量所指向的值

您试图做的是可能的,您只需要向函数传递一个可变类型,如列表。因此,如果您有以下代码,它应该满足您对示例的期望:

i=[0]
b=[0]
def increase(a):
    a[0]+=1

for e in range (3):
    increase(i)
    increase(b)

print(i)
print(b)

Python没有参数引用,如C++(符号),因此可以使用返回函数。

i=0
b=0
def increase(a):
  print(a)
  a+=1
  print(a)
  return a
for e in range (3):
    i = increase(i)
    b = increase(b)

您试图增加的变量是什么?输出应该是什么?为了能够在函数中修改全局变量,请在函数的开头添加
global a
。使用全局变量对您的代码是有害的,bla bla…@morozillic-这段代码在all@Nayuki不幸的是,您不能,这是python;)@我认为你误解了OP想要什么:他们在寻找类似于(C)的东西:
void-increase(int*a){(*a++;}increase(&I)您可能应该注意,您的“解决方案”是非常不可取的。python之所以选择使数字不可变是有原因的。我将添加这个话题。如果Python变量是通过引用传递的,那么就不需要传递不可变的类型。Python从不按引用传递。@juanpa.arrivillaga说Python从不按引用传递是误导性的,因为它总是做同样的事情。然而,你是对的,我已经更新了我的答案,以反映它通过对象引用传递参数的事实。保持答案不变,因为这绝对不是任何人都想做的最牵强的事情。@MoxieBall说Python从不通过引用传递,这并没有误导。通过引用传递的语义定义得很好,Python没有做到这一点。如果您想变得迂腐,Python使用对象共享或调用,这是一个公认的模糊术语,尽管在现代语言中很常见。我没有对记录投反对票。虽然这解决了一个变量的问题,但当使用多个变量时,它会变得非常混乱,就像OP提到的那样。