Pencarian google untuk "python nonlocal" muncul Proposal, PEP 3104 , yang sepenuhnya menggambarkan sintaks dan alasan di balik pernyataan itu. singkatnya, ia bekerja dengan cara yang persis sama dengan global
pernyataan, kecuali bahwa ia digunakan untuk merujuk ke variabel yang tidak global atau lokal ke fungsi.
Inilah contoh singkat tentang apa yang dapat Anda lakukan dengan ini. Penghitung generator dapat ditulis ulang untuk menggunakan ini sehingga lebih mirip idiom bahasa dengan penutup.
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
Jelas, Anda dapat menulis ini sebagai generator, seperti:
def counter_generator():
count = 0
while True:
count += 1
yield count
Tapi sementara ini adalah python idiomatis, tampaknya versi pertama akan sedikit lebih jelas bagi pemula. Menggunakan generator dengan benar, dengan memanggil fungsi yang dikembalikan, adalah titik kebingungan yang umum. Versi pertama secara eksplisit mengembalikan fungsi.