Question: Dynamic code import
Károly Ladvánszky
aa at bb.cc
Thu Oct 25 16:04:47 EDT 2001
More information about the Python-list mailing list
Thu Oct 25 16:04:47 EDT 2001
- Previous message (by thread): Question: Dynamic code import
- Next message (by thread): Question: Dynamic code import
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> Yes, it does. So where is problem? What I would like to do is import f11 from a file etc.., it is not written in the script. Is it possible and how? "Petr Kubanek" <petr at kubanek.net> az alábbiakat írta a következo üzenetben: news:9r9q9l$u5i$06$1 at news.t-online.com... > > For instance, the running program refers to function f1 through ff: > > > > def f1(a): > > return a*1.25 > > > > ff=f1 > > > > At some point, it turns out that f1(a) should return a*1.3+5. If it was > > possible to insert a > > new function, the running program could be modified like this: > > > > #--- this is to be 'imported' > > def f11(a): > > return a*1.3+5 > > #--- > > > > ff=f11 > > > > Now ff(a) would produce results by using the new rule embodied in f11! > > Yes, it does. So where is problem? > > > 2. Something is wrong with globals. Given the example below, I'd expect 2 > > for the second print. > > > > global gx > > gx=1 > > > > def set_gx(gx_new): > > gx=gx_new > > gx is local variable (at that point). Python works so. To work as expected, > you should add global: > > def set_gx(gx_new): > global gx > gx=gx_new > > > > > #--- This one works, test() prints the global gx. > > global gx > > gx=1 > > > > def test(): > > print gx # prints 1 > > > > b. > > #--- This one runs to error -> 'UnboundLocalError: local variable 'gx' > > referenced before assignment' !!! > > global gx > > gx=1 > > > > def test(): > > print gx > > gx=2 > > Ansewer is in error. Same problem: > > def test(): > global gx > print gx > gx=2 > > > > > c. > > #--- This one works but treats gx as local. Try test() first, then test1() > > will print the original 1 for the global gx! > > global gx > > gx=1 > > > > def test(): > > gx=2 > > print gx # prints 2 > > > > def test1(): > > print gx # prints 1! > > Again, it's in syntax. Insert global gx before first statement in def. > > Using global in Python is quite strange and you should try to avoid it, or > remeber to use global every time. Other possible way is throught __main__ > module, which worked like: > > import __main__ > > __main__.gx=1 > > def test: > print __main__.gx > > Even when __main__ gets reimported in second module, it's contents remains. > > Petr Kubanek ______________________________________________________________________________ Posted Via Binaries.net = SPEED+RETENTION+COMPLETION = http://www.binaries.net
- Previous message (by thread): Question: Dynamic code import
- Next message (by thread): Question: Dynamic code import
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list