problem with variable and function
Alex Hall
mehgcap at gmail.com
Sun Mar 14 15:34:20 EDT 2010
>> #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 at rebertia.com> wrote:
>> On 3/14/10, Chris Rebert <clp2 at rebertia.com> wrote:
>>> On Sun, Mar 14, 2010 at 10:26 AM, Alex Hall <mehgcap at 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 at 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 at gmail.com; http://www.facebook.com/mehgcap
More information about the Python-list
mailing list