From: Alex Hall on 14 Mar 2010 15:34 >> #we now have the default mode to be used, but what if it is disabled? >> if(sys.modules[modeNames[mode]].enabled=='False'): >> nextMode() > >How is this call supposed to work when `funcs` (which nextMode() uses) >hasn't been defined yet?! That seems to have done it, thanks. Sorry about top-posting; inline posting is much harder to read when using a screen reader, as I do, so I am used to top-posting. On 3/14/10, Chris Rebert <clp2(a)rebertia.com> wrote: >> On 3/14/10, Chris Rebert <clp2(a)rebertia.com> wrote: >>> On Sun, Mar 14, 2010 at 10:26 AM, Alex Hall <mehgcap(a)gmail.com> wrote: >>>> Hi all, >>>> I have a file with a dictionary and a function. The dictionary holds >>>> the name of the function, and the function references the dictionary. >>>> If I put the dictionary first, the function is happy but the >>>> dictionary says the function is not defined. If I switch the two and >>>> put the function first, the function says the dictionary does not >>>> exist. Does anyone have an idea as to how I can make both of them >>>> happy? >>> <snip> >>>> Reverse it, though: >>>> >>>> def myFunc(): >>>> myOtherVar=myVar >>>> >>>> myVar={ >>>> 1:myFunc >>>> } >>>> >>>> and the function myFunc does not see the dictionary. >>> >>> Please be more specific in what you mean by it not "seeing" the >>> dictionary, because the "reversed" approach *should* work: >>> >>> $ python >>> Python 2.6.4 (r264:75706, Feb 25 2010, 01:21:39) >>> [GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin >>> Type "help", "copyright", "credits" or "license" for more information. >>>>>> def foo(): >>> ... bar = baz >>> ... print bar >>> ... >>>>>> baz = {1:foo} >>>>>> foo() >>> {1: <function foo at 0x37b870>} > > On Sun, Mar 14, 2010 at 11:12 AM, Alex Hall <mehgcap(a)gmail.com> wrote: >> Below is pasted the function which is looking for the "funcs" >> dictionary, as well as the dictionary. They appear in my py file in >> this order, yet I get an error in nextMode() that "global name 'funcs' >> is not defined". Oddly, the keys dictionary works fine; it is defined >> above the nextMode function. > > Please include the full exception Traceback. > Also, please don't top-post in the future. > >> def nextMode(): >> global HOTKEYS >> global HOTKEY_ACTIONS >> global mode > > You don't need a `global` declaration unless your function needs to > rebind the global variable in question. > So you can remove the next 4 global declarations; they're unnecessary. > >> global modes >> global modeNum >> global modeNames >> global funcs >> #mode=mode+1 >> #check to make sure the newly selected mode is enabled >> tmp=0 >> while(tmp<modeNum): >> mode=(mode+1)%modeNum >> if(sys.modules[modeNames[mode]].enabled=='True'): >> break #break on the first enabled mode we find >> #end if >> tmp+=1 >> #end while >> HOTKEYS=keys[mode] >> HOTKEY_ACTIONS=funcs[mode] >> registerHotkeys() >> speak("Now in "+str(modes[mode])+" mode.") >> #end def >> >> #we now have the default mode to be used, but what if it is disabled? >> if(sys.modules[modeNames[mode]].enabled=='False'): >> nextMode() > > How is this call supposed to work when `funcs` (which nextMode() uses) > hasn't been defined yet?! > > Cheers, > Chris > -- > http://blog.rebertia.com > -- Have a great day, Alex (msg sent from GMail website) mehgcap(a)gmail.com; http://www.facebook.com/mehgcap
First
|
Prev
|
Pages: 1 2 Prev: What does Error: 'module' object is not callable Mean? Next: sqlite3 is sqlite 2? |