Nesting functions to use when you use it several times but you don't need to use it as a method for going out.
def hoge():
def fuga():
pass
I wondered what the handling of variables would be when using this, so I verified it.
def hoge():
x = 1
def fuga():
x = 3
fuga()
print(x)
Execution result
hoge()
1
In the case of local variables, it seems that they are treated as separate variables. Naturally natural.
However, this can be changed with the nonlocal
declaration.
def hoge():
x = 1
def fuga():
nonlocal x
x = 3
fuga()
print(x)
Execution result
hoge()
3
class Sample:
def __init__(self):
self.hoge = None
def hoge():
smp = Sample()
smp.hoge = "abcde"
def fuga():
smp.hoge = "fghijk"
fuga()
print(amp.__dict__)
Execution result
hoge()
{'hoge': 'fghijk'}
I wonder if class variables will be treated globally.
You can use this to refresh your code when you want to put another value in a class variable depending on the condition
class Sample():
def __init__(self):
self.hoge = None
self.fuga = None
def hoge(list):
smp = Sample()
def set_val(val1, val2):
smp.hoge = val1
smp.fuga = val2
if len(list) == 1:
set_val(list[0], None)
else:
set_val(list[0], list[1])
print(smp.__dict__)
Execution result
hoge(['aaaa', 'bbbb'])
{'hoge': 'aaaa', 'fuga': 'bbbb'}
hoge(['cccc'])
{'hoge': 'cccc', 'fuga': None}
I don't know if there is any use for it!
Recommended Posts