On Aug 18, 11:03 pm, Ramashish Baranwal <ramashish.li...@gmail.com>
wrote:
Hi,
I want to use variables passed to a function in an inner defined
function. Something like-
def fun1(method=None):
def fun2():
if not method: method = 'GET'
print '%s: this is fun2' % method
return
fun2()
fun1()
However I get this error-
UnboundLocalError: local variable 'method' referenced before
assignment
This however works fine.
def fun1(method=None):
if not method: method = 'GET'
def fun2():
print '%s: this is fun2' % method
return
fun2()
fun1()
Is there a simple way I can pass on the variables passed to the outer
function to the inner one without having to use or refer them in the
outer function?
Thanks,
Ramashish
This works error free:
def fun1(x=None):
y = 10
def fun2():
print x
if not x: method = 'GET'
print '%s: this is fun2' % method
fun2()
fun1()
Python reads x from the fun1 scope. But the following produces an
error for the print x line:
def fun1(x=None):
y = 10
def fun2():
print x
if not x: x = 'GET' #CHANGED THIS LINE
print '%s: this is fun2' % method
fun2()
fun1()
Traceback (most recent call last):
File "3pythontest.py", line 8, in ?
fun1()
File "3pythontest.py", line 7, in fun1
fun2()
File "3pythontest.py", line 4, in fun2
print x
UnboundLocalError: local variable 'x' referenced before assignment
It's as if python sees the assignment to x and suddenly decides that
the x it was reading from the fun1 scope is the wrong x. Apparently,
the assignment to x serves to insert x in the local scope, which makes
the reference to x a few lines earlier an error.