When do default parameters get their values set?
Tim Chase
tim.chase at 1
Tue Dec 9 11:32:01 EST 2014
To: bSneddon
Copy: python-list at python.org
On 2014-12-08 14:10, bSneddon wrote:
> I ran into an issue setting variables from a GUI module that
> imports a back end module. My approach was wrong obviously but
> what is the best way to set values in a back end module.
>
> #module name beTest.py
>
> cfg = { 'def' : 'blue'}
>
> def printDef(argT = cfg['def']):
At this point (after the "def" has completed defining the function),
the expression is evaluated and assigned to the default argument.
> beTest.cfg['def'] = "no red"
> beTest.printDef()
>
> This prints blue. I suppose because I am changing a local copy
> of cfg dictionary. What is the write approach here?
Well, you can bind to a default dictionary rather than an entry in
that dictionary:
cfg = {'def': 'blue'}
def printDef(config=cfg):
...
access(config['def'])
which will make the look-up happen at run-time rather than
definition/bind-time.
beTest.cfg['def'] = 'Red!'
beTest.printDef()
# should print "Red!"
-tkc
--- SoupGate-Win32 v1.05
* Origin: <SpaceSST.BBS.Fidonet<>NNTP.gateway. at .piz.noip.me> (1:249/999)
--- Synchronet 3.15b-Win32 NewsLink 1.92
SpaceSST BBS Usenet <> Fidonet Gateway
More information about the Python-list
mailing list