Kehalusan Semasa Bekerja dengan Fungsi Dalaman dalam Python
Dalam Python, bukan sahaja boleh terdapat fungsi bersarang,
malah satu fungsi boleh memulangkan fungsi yang lain.
Sebagai contoh, katakan fungsi outer
memulangkan kod sumber fungsi inner
sebagai hasil:
def outer():
def inner():
return '+++'
return inner
Mari kita rakam panggilan outer ke dalam
pembolehubah res:
res = outer()
print(res)
Selepas kod dilaksanakan, objek dengan fungsi akan dipaparkan:
<function outer.<locals>.inner at 0x000001564A212B90>
Jika pembolehubah res dipanggil dengan
tanda kurung, mesej '+++' akan dipulangkan:
print(res()) # akan memaparkan '+++'
Kod boleh ditulis semula supaya res
merakamkan outer dengan dua tanda kurung
- untuk memanggil dirinya sendiri dan fungsi
inner. Ini bermakna tanda kurung tambahan
boleh ditulis di sebelah kanan fungsi luaran
sebanyak bilangan fungsi yang bersarang di
dalamnya:
res = outer()()
print(res) # akan memaparkan '+++'
Diberi kod berikut:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Beritahu apa yang akan dipaparkan dalam konsol.
Diberi kod berikut:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Beritahu apa yang akan dipaparkan dalam konsol.