NB question on global/local variables in functions

Bruno Desthuilliers onurb at xiludom.gro
Mon Jul 17 08:04:57 EDT 2006


Wolfgang wrote:
> Hi all,
> 
> I've started to write some functions but I have some problems with
> common variables in that functions.
> 
> So I have some variables which should be accessible by all my functions
> but not accessible by the rest of my code. How can I do this?

You can use a closure:

def makefuns():
    c1=123.0
    c2=134.0

    def fun(temp):
        return temp+c1-c2
    def fun1(temp):
        return temp-c1

    return fun, fun1

fun, fun1 = makefuns()

fun(42)
fun1(42)


But the canonical solution is to use a class:

class Foo(object):
    def __init__(self):
        self._c1=123.0
        self._c2=134.0

    def fun(self, temp):
        return temp + self._c1 - self._c2

    def fun1(self, temp):
        return temp - self._c1

foo = Foo()
foo.fun(42)
foo.fun1(42)



-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"



More information about the Python-list mailing list