iu2 a écrit :
Hi,
Is it possible somehow to change a varible by passing it to a
function?
For which definition of "change a variable" ?
I tried this:
def change_var(dict0, varname, val):
dict0[varname] = val
Ok, this is mutating dict0, so it works.
def test():
a = 100
change_var(locals(), 'a', 3)
Please (re)read the doc for locals():
http://www.python.org/doc/2.6/library/functions.html#locals
See the big warning ?
print a
But test() didn't work,
It did. The problem is elsewhere.
the value a remains 100.
I have several variables initialized to None.
Where ?
I need to convert each one of them an object only if it is None.
something like:
if not var1: var1 = MyObject()
Warning : some objects can eval to false in a boolean context without
being None. Better to explicitely test identity here:
if var1 is None:
var1 = Something()
I want this to be a function, that is:
def create_obj(var):
if not var: var = MyObj()
This is a rebinding, not a mutation. Here, 'var' is a local *name*, so
rebinding it will only affect the local namespace.
# set properties of var
Why don't you use the initializer of MyObj here ?
class MyObj(object):
def __init__(self, prop1, propx):
# set properties of self
self.prop1 = prop1
self.propx = propx
Then just call:
var = MyObj(somevalue, someothervalue)
Now, I know I can achieve this by functional programming,
???
def create_obj(var):
if not var:
x = MyObj()
# set properties of x
return x
return var
This is just a plain function. You may want to re-read the definition of
"functional programming" !-)
and then
var = creaet_obj(var)
Is there another way?
What's wrong with this one ?
--
http://mail.python.org/mailman/listinfo/python-list