Nuanses wanneer met interne funksies in Python gewerk word
In Python kan daar nie net geneste funksies
wees nie, maar een funksie kan ook 'n ander
een teruggee. Byvoorbeeld, laat die funksie outer
die bronkode van die funksie inner as resultaat
teruggee:
def outer():
def inner():
return '+++'
return inner
Kom ons skryf die aanroep van outer in die
veranderlike res:
res = outer()
print(res)
Na die uitvoering van die kode sal 'n objek met die funksie verskyn:
<function outer.<locals>.inner at 0x000001564A212B90>
As die veranderlike res egter met ronde
hakies aangeroep word, sal die boodskap
'+++' terugkom:
print(res()) # sal '+++' uitdruk
Die kode kan so herskryf word dat in res
outer met twee ronde hakies geskryf word - vir die
oproep van haarself en die funksie inner.
Daaruit volg dat addisionele ronde hakies
regs van die eksterne funksie geskryf kan word volgens die getal
geneste funksies daarin:
res = outer()()
print(res) # sal '+++' uitdruk
Die volgende kode word gegee:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Sê wat in die konsole uitgedruk sal word.
Die volgende kode word gegee:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Sê wat in die konsole uitgedruk sal word.