通过引用修改单个变量

问题描述 投票:0回答:1

我看到了其他与此主题相关的问题,但还没有真正找到以下简单问题的答案。

VB代码:

Function f_x(ByRef x As Integer)

    x = x + 1

End Function

Sub test()

    Dim w As Integer
    w = 2

    Call f_x(w)

    MsgBox w

End Sub

上述产出为3在函数 "F_x() "中,通过指针 "x "来修改变量 "w"(即 "通过引用")。

我可以在Python中写一个类似的函数,通过一个指针来修改一个数值变量(即 "通过引用")吗?我知道一个 list 或 Numpy 数组在传递给一个函数时,会通过引用来修改,但是单个数值变量呢?

EDIT注:按照下面的建议,我在此加上我在Python中的编码尝试(显然没有用)。

def test_function(y):
    y = y + 1

x = 2 
test_function(x) 
print(x)

上面的输出是2,而不是3。

编辑2疑问:到底为什么有人会费心选择是通过引用(通过指针)还是通过值来传递一个数字变量?如果我们的任务是编写一个计算效率很高的代码,并且要处理大的浮点数:在这里,指针("通过引用")只需要存储内存地址,而 "通过值 "的方法将不得不在函数中 "复制 "整个变量。

python pass-by-reference
1个回答
4
投票

你可以把你的变量放在一个像dict这样的可变对象中。

def test_function(y):
    y['x'] = y['x'] + 1

d = {'x': 2} 
test_function(d) 
print(d['x'])

原始类型是不可变的

© www.soinside.com 2019 - 2024. All rights reserved.