accesibility of the namespace
Steven D'Aprano
steve at REMOVETHIScyber.com.au
Thu Mar 9 06:39:04 EST 2006
On Thu, 09 Mar 2006 01:42:55 -0800, Petr Jakes wrote:
> In my code I have relatively wide dictionary definition (about 100
> rows).
>
> I would like to put it in to the different file (module) because of the
> main code readability (say the name of the file will be
> "my_dictionary.py")
>
> In the dictionary I have strings formatted using % operator like:
> lcd={2:"Your credit= %3d" % (credit)}
The values in the dictionary (e.g. "Your credit= 9.99", or whatever value
credit actually has) are fixed at creation. I assume that means that
credit etc. are also fixed values.
> While I am trying to import my_dictionary in to the main code, I am
> getting:
>
> exception unhandled NameError
> name "credit" is not defined
>
> How can I organize my code so the "credit" variable will be "visible"
> in the "my_dictionary" namespace?
Put it in the same module as my_dictionary.
E.g.
# Module my_dictionary.py
# which I hope will have a more sensible name before being used
# for production-code
credit = 27
foo = 15
lcd = {2: "Your credit= %3d" % credit}
On the other hand, if credit is a calculated value, this might not be
an easy thing to do. In that case, you can do this:
# Module calculatevalues.py
credit = some_function()
foo = some_other_function()
# Module my_dictionary.py
import calculatevalues
lcd = {2: "Your credit= %3d" % calculatevalues.credit}
On the third hand, if the strings from the dictionary are supposed to be
changed at run-time (which sounds more sensible to me) then do this:
# Module my_dictionary.py
lcd = {2: "Your credit= %3d"}
# main program
import my_dictionary
... lots of code here
credit = 27
... more code
print lcd[2] % credit
--
Steven.
More information about the Python-list
mailing list