Wolfgang> So I have some variables which should be accessible by all my
    Wolfgang> functions but not accessible by the rest of my code. How can I
    Wolfgang> do this?

    Wolfgang> ###function.py:

    Wolfgang> c1=123.0
    Wolfgang> c2=134.0

    Wolfgang> def fun(temp):
    Wolfgang>   return temp+c1-c2

    Wolfgang> def fun1(temp):
    Wolfgang>   return temp-c1


    Wolfgang> ### caller.py
    Wolfgang> from function import *
    Wolfgang>   print fun(10.0)
    Wolfgang>   print c1

First, avoid "from function import *" as it pollutes your namespace.  Either
import specific symbols or just the module:

    from function import fun, fun1
    import function

Second, if you really must, add an __all__ list to function.py, generally
right at the top:

    __all__ = ['fun', 'fun1']

(Note that __all__ is a list of strings.)  The "from star" import will only
import the names in the __all__ list.  You can also "hide" individual names
from a "from star" import by prefixing them with a single underscore (e.g.,
"_c1" instead of "c1").

Third, one of Python's key concepts is "we're all adults here".  You can't
really and truly hide c1 and c2, so just act responsibly and don't mess with
them from outside the function module.

Skip
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to