Нюансы пры працы з унутранай функцыяй у Python
У Python могуць быць не толькі ўкладзеныя
функцыі, але і адна функцыя можа вяртаць
іншую. Напрыклад, хай функцыя outer
вяртае як вынік зыходны код
функцыі inner:
def outer():
def inner():
return '+++'
return inner
Давайце запишам выклік outer у
зменную res:
res = outer()
print(res)
Пасля выканання кода выйдзе аб'ект з функцыяй:
<function outer.<locals>.inner at 0x000001564A212B90>
Калі ж выклікаць зменную res з
круглымі дужкамі, то вернецца паведамленне
'+++':
print(res()) # выведзе '+++'
Можна перапісаць код так, каб у res
запісвалася outer з двума круглымі
дужкамі - для выкліку самой сябе і функцыі
inner. З чаго вынікае, што можна
запісваць дадатковыя круглыя дужкі
справа ад знешняй функцыі па колькасці,
укладзеных у яе функцый:
res = outer()()
print(res) # выведзе '+++'
Дадзены наступны код:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Скажыце, што выйдзе ў кансоль.
Дадзены наступны код:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Скажыце, што выйдзе ў кансоль.