I am currently working on a simple calculator program and I have run into a problem with taking data from a nested function and using it in another nested function.
Here is the portion of my code that this problem relates to:
def func():
def func1():
a = float(input("Enter first number: "))
b = float(input("Enter second number: "))
def func2():
print(f"{a}, {b}")
func1()
func2()
func()
As you can see, func() is called which calls func1() and func2(). However, running this program results in NameError: name 'a' is not defined with an error reference line pointing towards the body of func2().
I know it is not possible to access a, b within func2() as they are only defined within func1(), but I cannot use the nonlocal statement as according to the documentation:
'names listed in a nonlocal statement ... must refer to pre-existing bindings in an enclosing scope.'
and func1() does not enclose func2().
More so, I am trying to avoid using the global statement or defining a and b in func() because it seems to be poor practise in any programming language (reference) and could lead to unintended side-effects later on in my program's development.
Is there any way to declare a and b as usable and modifiable anywhere within func(), whilst still defining it in func1?