修改参数作为一面

可能重复:
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?