+ 1
Variable assignment in nested function
My function has another purpose, I simplified it. def addSquares(x,y): def squareX(): x = x**2 def squareY(): y = y**2 squareX() squareY() return x+y print(addSquares(3,5)) --- To my logic, i assgined a value to y and x in addSquares(3,5). So x = 3 and y = 5. "UnboundLocalError: local variable 'x' referenced before assignment" So how can I make such a nested function using an outer parameter in inner functon? If i try to define x and y as global at the start of the outer function, i get "SyntaxError: name 'x' is parameter and global", at the start of the inner function "NameError: name 'x' is not defined". Please help! Thanks in advance.
6 Respostas
+ 1
Try this to see what is happening inside the functions:
https://code.sololearn.com/cHft055cl79E/?ref=app
+ 1
Don't use global here, use nonlocal keyword.
And even better, simply store the result of the function calls to x and y, it will be better than using some nonlocal (or global) tricks.
0
@NotAPythonNinja
x = 3
y = 5
def square():
global x
x = x**3
square()
sum = x+y
print(sum)
Although square() does not take any parameters or return any values, it does change the value of x.
The only difference in this case and the other is that assignement is done here using x = 3, but above using addSquares(3,5). Is my idea impossible to implement?
0
@NotAPythonNinja
def addSquares(x,y):
def squareX(x):
global x
x = x**2
def squareY(y):
global y
y = y**2
squareX()
squareY()
return x+y
print(addSquares(3,5))
this gives "SyntaxError: name 'x' is parameter and global". Btw x and y are only to be used inside the addSquares() function.
0
@NotAPythonNinja
So that means i cannot implement the code without defining x and y outside of the function?
0
Yes, i did. I want something a little bit different. But if no choices left, i might as well use your option. Thanks.