参照呼叫功能参数


问题内容

给定一个功能:

def A(a, b, c):
    a *= 2
    b *= 4
    c *= 8
    return a+b+c

如何设置“ c”变量以通过引用进行调用,所以如果我调用d = A(a,b,c),则c将指向相同的int对象,并在函数内进行更新?


问题答案:

您正在进入一个模糊的领域:您正在谈论在函数中声明global(或nonlocal)变量,这根本不应该做。函数的作用是做一件事情,并且在不影响其状态或输出的其他值或函数的同意的情况下执行它们。

很难举一个可行的例子:您是否可以保留变量的副本以供以后参考?您可以扩展此代码以传回tuple,并在tuple需要时引用的成员或总和:

>>> def A(a, b, c):
        return (a*2, b*4, c*8)

>>> d = A(2, 4, 8)
>>> sum(d)
84
>>> d[-1] #or whatever index you'd need...this may serve best as a constant
64