[Tutor] variables question.
Steven D'Aprano
steve at pearwood.info
Fri Nov 12 03:24:23 CET 2010
Jeff Honey wrote:
> I have a question about where variables are exposed in python.
>
> I have a monolothic script with a number of functions defined, can those functions share variables? can I instantiate them outside the function of where they are needed? do they need to be wrapped in quotes, ever?
It sounds to me that you've come to Python from bash or shell scripting.
Python has no real equivalent to the idea of quoting variable names, and
there's never any need to quote variables to protect them from being
accidentally evaluated. There's no risk in doing this:
x = 1
s = "del x"
print(s)
and having the variable x accidentally deleted because you neglected to
quote the variable s correctly. Nor is there any simple way you can do
this:
a = "something"
b = "a"
print($b) # prints "something"
although there is eval and exec, both of which are dangerous/advanced
and should be avoided unless you really know what you're doing.
Aside: the idiomatic way of doing that in Python would be:
data = {"a": "something"}
key = "a"
print(data[key]) # prints "something"
[...]
> ...what about my python being called from some parent script (something OTHER than python) that instantiates blah and foo FOR me?
If you want to gather information from external sources, you need to
choose a way to have that information fed into your script. The easiest
way is to use command-line arguments. Python has lots of different ways
to get to command-line arguments -- see the getopt and optparse modules
in the standard library, and the argparse third-party module, and
probably others.
Another way is with environment variables. Python can read env variables
set by the calling process using os.getenv.
--
Steven
More information about the Tutor
mailing list