cannot pass a variable from a function

Miki Tebeka miki.tebeka at zoran.com
Thu Jun 17 02:54:28 EDT 2004


Hello Doug,

> In other language
> subroutine foo(b,c)
>     c=b*1000
> return
> call foo(q,r)
> where q and r are defines and same type as b,c as  function
> How do I do this in python.  I need to perform operations on a variable and
> pass the new variable to the program.
I think you mean "call by reference". In this case you can only modify
"compound" types (there is a better word for this) such as lists, has
tables ...
If you do:
def f(l):
    l.append(1)

a = []
f(a) # a -> [1]

However you can't do that to "simple" types such as int, long ...
def f(x):
    x += 2
a = 1
f(a) # a -> 1

IMO this is not a problem since in Python you can returns multiple
values and less side effects = less bugs.

If you *must* do this you can wrap your variables:
def f(x):
    x.a += 2

class P:
    pass
p = P()
p.a = 1
f(p) # p.a -> 3


HTH.

Bye.
--
-------------------------------------------------------------------------
Miki Tebeka <miki.tebeka at zoran.com>
The only difference between children and adults is the price of the toys.




More information about the Python-list mailing list