修改参数作为一面
可能重复:
Python:我如何通过引用传递变量?
我试图编写一个函数来修改传递的参数之一。 这是当前的代码:
def improve_guess(guess, num):
return (guess + (num/guess)) / 2
x = 4.0
guess = 2.0
guess = improve_guess(guess, x)
但是,我想以这样的方式编写代码,我不必做最后的任务。 这样,我可以打电话给:
improve_guess(guess,x)
并猜测新的价值。
(我故意没有提到通过引用,因为在我的网络搜索过程中,我发现了很多有关该主题的学术讨论,但没有这样做的干净方式。我并不真的想在全局中使用全局或封装此列表。)
你不能直接这样做,因为整数和浮点类型在Python中是不可变的。
你可以将guess
包装成某种可变结构(例如列表或自定义类),但这会非常快速地变得非常难看。
PS我个人非常喜欢guess = improve_guess(guess, x)
的显式性质,因为它毫不怀疑究竟是在修改什么。 我甚至不需要知道任何有关improve_guess()
。
但是这是唯一的两种方法:使用全局,或者使用可变类型,如列表。 你不能在Python中修改一个非可变变量:这样做只是将本地名称重新绑定到一个新值。
如果你真的不喜欢包装在列表中,你可以创建自己的类并传递一个可变的实例,但我看不出有任何好处。
链接地址: http://www.djcxy.com/p/20833.html上一篇: Modify parameter as a side
下一篇: Without pointers, can I pass references as arguments in Python?