Rumah >hujung hadapan web >tutorial js >Penggunaan praktikal penutupan dalam pengaturcaraan berfungsi
Aplikasi praktikal penutupan dalam pengaturcaraan berfungsi memerlukan contoh kod khusus
Penutupan ialah konsep penting dalam pengaturcaraan berfungsi Ini bermakna bahawa dalam fungsi bersarang, fungsi dalaman boleh diakses Pembolehubah fungsi luaran. Penutupan mempunyai pelbagai aplikasi praktikal dalam pengaturcaraan berfungsi, menjadikan kod lebih ringkas dan fleksibel, dan membolehkan beberapa fungsi lanjutan. Artikel ini akan memperkenalkan konsep penutupan dan aplikasi praktikalnya dalam pengaturcaraan berfungsi secara terperinci, dan memberikan contoh kod yang sepadan.
Penutupan merujuk kepada situasi di mana pembolehubah fungsi luaran boleh diakses dari dalam fungsi dan boleh dipanggil dari luar fungsi. Dalam pengaturcaraan berfungsi, penutupan boleh dilaksanakan melalui sarang fungsi, di mana pembolehubah dari fungsi luar dirujuk dalam fungsi dalam.
Aplikasi biasa adalah untuk melaksanakan pengiraan tertunda. Menggunakan penutupan, kita boleh menangguhkan beberapa operasi pengiraan sehingga fungsi dipanggil. Berikut ialah contoh mudah:
def multiply_by(n): def multiplier(x): return n * x return multiplier # 使用闭包创建一个乘法器 times_5 = multiply_by(5) # 调用乘法器进行计算 result = times_5(10) # 输出50
Dalam contoh ini, fungsi multiply_by
函数返回了一个内部函数 multiplier
,内部函数能够访问到外部函数的变量 n
。外部函数返回的这个内部函数形成了闭包,并且可以在之后的调用中使用。
闭包还可以用来实现计数器的功能。下面是一个示例:
def counter(): count = 0 def increment(): nonlocal count count += 1 return count return increment # 创建一个计数器 counter_1 = counter() # 使用计数器 print(counter_1()) # 输出1 print(counter_1()) # 输出2
在这个示例中,counter
函数定义了一个局部变量 count
,并返回了一个内部函数 increment
。内部函数每次调用时,会将计数器加1,并返回当前的计数值。
闭包还可以用于实现缓存的功能。下面是一个示例:
def memoize(func): cache = {} def wrapper(*args): if args not in cache: cache[args] = func(*args) return cache[args] return wrapper # 创建一个带缓存的函数 @memoize def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2) # 调用带缓存的函数 print(fibonacci(10)) # 输出55 print(fibonacci(10)) # 不再计算,直接从缓存中取值,输出55
在这个示例中,memoize
函数接受一个函数作为参数,并返回了一个内部函数 wrapper
。内部函数使用一个字典 cache
rrreee
Dalam contoh ini, fungsicounter
mentakrifkan pembolehubah setempat count
dan mengembalikan fungsi dalaman increment
. Setiap kali fungsi dalaman dipanggil, pembilang akan dinaikkan sebanyak 1 dan nilai kiraan semasa akan dikembalikan. 🎜🎜3. Caching 🎜🎜 Penutupan juga boleh digunakan untuk melaksanakan fungsi caching. Berikut ialah contoh: 🎜rrreee🎜Dalam contoh ini, fungsi memoize
menerima fungsi sebagai parameter dan mengembalikan fungsi dalaman wrapper
. Fungsi dalaman menggunakan kamus cache
untuk menyimpan hasil yang dikira Setiap kali ia dipanggil, ia mula-mula menyemak sama ada terdapat hasil yang sepadan dalam cache, jika tidak, hasilnya dikira dan dicache. 🎜🎜Kesimpulan🎜🎜Penutupan mempunyai pelbagai aplikasi praktikal dalam pengaturcaraan berfungsi dan boleh digunakan untuk melaksanakan pengiraan tertunda, pembilang, cache dan fungsi lain. Dengan menggunakan penutupan, kami boleh menjadikan kod lebih ringkas dan fleksibel, serta dapat melaksanakan beberapa fungsi lanjutan. Melalui contoh kod khusus dalam artikel ini, saya berharap ia dapat membantu pembaca lebih memahami aplikasi praktikal penutupan dalam pengaturcaraan berfungsi. 🎜Atas ialah kandungan terperinci Penggunaan praktikal penutupan dalam pengaturcaraan berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!