通过Python中的“引用”传递

时间:2012-12-16 17:38:35

标签: python c reference

我很抱歉再次重复同样的事情,但我已经搜索了但我还是无法解决我的问题......

如果我想更改单个“int”值,我是否必须创建列表?一团糟。它在C语言中更加舒适...... (如void函数(int a,b,c,* d,* e,* f))

这就是我要做的事情(我必须改变“d”,“e”,“f”):

d = 4
e = 9
f = 11
def function(a,b,c,d,e,f)
   a = something
   b = something
   c = 1
   d = 2
   e = 3
   f = 4

话虽如此,我是否必须创建一个字典或列表来处理简单的数字? 我还是个新手,但是我想知道这个问题的最佳解决方案是什么,最近让我心烦意乱。

谢谢你们。

2 个答案:

答案 0 :(得分:5)

是。因为python可以简单地返回一个元组,所以你用它来改变多个值:

d = 4
e = 9
f = 11
def function(a,b,c)
   a = something
   b = something
   c = 1
   d = 2
   e = 3
   f = 4
   return (d, e, f)

d, e, f = function(d, e, f)

由于通过引用传递主要用于(至少在C中)以解决无法从函数返回多个值的事实,因此您不需要需要在Python中通过引用传递。

答案 1 :(得分:2)

有一个问题(和答案)here on S.O解释了将对象作为参数传递时需要了解的内容。

关于您的代码,您始终可以在tuple中返回这些值,并将它们分配给全局命名空间中thos对象的引用,同样地:return (d, e, f)。现在将它们分配给对象中的引用,可以使用序列解包,例如d, e, f = function(params)