Oh, nak, ada beberapa kode di layar dan itu terlihat sangat membingungkan.
Ini adalah contoh fungsi yang sangat berbelit-belit dan rumit yang tidak akan pernah Anda tulis, tetapi akan
bagus untuk tujuan latihan.
Dan kita berbicara secara khusus tentang ini yang disebut nonlokal.
Ini sebenarnya kata kunci baru di Python tiga.
Dan seperti yang Anda lihat, Reppel saya bahkan tidak menyadarinya.
Jadi bahkan tidak disorot dengan warna biru karena ini adalah fitur baru.
Tetapi saya ingin berbicara dengan Anda tentang hal itu dan memberi tahu Anda apa fungsinya.
Kata kunci nonlocal key digunakan untuk merujuk ke bagian ini, parent local ini.
Ini adalah cara bagi kita untuk mengatakan, hei, saya ingin menggunakan variabel yang bukan variabel global, tetapi di
luar lingkup fungsi saya.
Jadi berdasarkan definisi itu, coba dan jeda video dan lihat apa yang mungkin dilakukan fungsi ini, saya
akan menjalankannya sekarang dan kemudian menelusuri kode jika saya mengklik jalankan.
Inilah yang kami dapatkan.
Jadi mari kita bicara tentang ini.
Kami memiliki fungsi luar dan kemudian kami memanggil fungsi luar.
Jadi interpreter Python akan pergi dan berkata, baiklah, kami memiliki variabel X yang lokal
ke fungsi luar.
Dan kemudian di dalam sini, kita akan mendefinisikan fungsi dalam, fungsi lain.
Dan di sini, bahkan sebelum kita menyebutnya, kita melompat ke baris sembilan dan berkata, baiklah, panggil fungsi dalam.
Kami kembali dan kami berkata, hei, baris lima, saya ingin menggunakan X nonlokal.
Hmm.
Apa artinya?
Nah, saya ingin menggunakan variabel X ini karena ini nonlokal.
Artinya, saya tidak ingin membuat variabel X baru.
Saya ingin melompat ke lingkup orang tua saya, lingkup orang tua saya lokal dan ambil apa pun yang Anda temukan di sana.
Selama itu bukan variabel global yang akan dilakukan oleh orang tua mana pun.
Saya ingin mengambil nonlokal itu.
Jadi sekarang X ini mengacu pada fungsi luar di sini.
Jadi, ketika kami mengatakan X sama dengan nonlokal, kami menetapkan string baru ini.
Dan mengganti lokal ini sehingga ketika kami mencetak berinteraksi, kami mendapatkan nonlocal, tetapi juga ketika kami
mencetak X luar, kami telah memodifikasi cakupan luar ini dengan kata kunci nonlocal.
Sehingga menjadi nonlokal juga.
Jika saya menghapus baris ini dan beri komentar dan saya klik jalankan.
Anda lihat perbedaannya sekarang kita memiliki inner nonlocal, tetapi outer local belum dimodifikasi karena
ini adalah variabel baru.
Sekali lagi, saya berpendapat bahwa ini sebenarnya membuat kode Anda lebih rumit dari yang seharusnya.
Jadi ada kasus khusus di mana Anda mungkin ingin menggunakan ini, tetapi jika Anda dapat mencoba membuat
kode Anda dapat diprediksi, di mana Anda dapat menghindari penggunaan hal-hal seperti nonlokal dan global, ingatlah, mereka ada karena suatu
alasan karena berguna dalam beberapa situasi.
Oleh karena itu, ingatlah, buat kode Anda dapat diprediksi, buat kode Anda bersih, dan sampai jumpa di
video berikutnya.