Modify parameter as a side-effect in python
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Python: How do I pass a variable by reference?
我正在尝试编写一个修改传递参数之一的函数。以下是当前代码:
1 2 3 4 5 6 | def improve_guess(guess, num): return (guess + (num/guess)) / 2 x = 4.0 guess = 2.0 guess = improve_guess(guess, x) |
但是,我想以这样一种方式编写代码,我不必做最后的工作。这样,我就可以打电话给:
1 | improve_guess(guess,x) |
并得到新的猜测值。
(我故意没有提到通过引用,因为在我的网络搜索过程中,我发现了很多关于这个主题的学术讨论,但没有一个清晰的方式来做这件事。我不想在列表中使用全局或封装。)
不能直接这样做,因为整数和浮点类型在Python中是不可变的。
您可以将
P.S.我个人非常喜欢
但只有两种方法可以做到这一点:要么使用全局的,要么使用一个可变的类型,比如列表。不能在python中修改不可变的变量:这样做只是将本地名称重新绑定到一个新值。
如果您真的不喜欢包装在列表中,您可以创建自己的类并传递一个可变的实例,但我看不到这样做的任何好处。