我看到了其他与此主题相关的问题,但还没有真正找到以下简单问题的答案。
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疑问:到底为什么有人会费心选择是通过引用(通过指针)还是通过值来传递一个数字变量?如果我们的任务是编写一个计算效率很高的代码,并且要处理大的浮点数:在这里,指针("通过引用")只需要存储内存地址,而 "通过值 "的方法将不得不在函数中 "复制 "整个变量。
你可以把你的变量放在一个像dict这样的可变对象中。
def test_function(y):
y['x'] = y['x'] + 1
d = {'x': 2}
test_function(d)
print(d['x'])
原始类型是不可变的