Fungsi adalah salah satu "warga negara kelas satu" Python, yang berarti bahwa fungsi berada pada level yang sama dengan objek Python lainnya seperti bilangan bulat, string, modul, dll. Mereka dapat dibuat dan dihancurkan secara dinamis, diteruskan ke fungsi lain, dikembalikan sebagai nilai, dll Show Python mendukung konsep "fungsi bersarang" atau "fungsi dalam", yang merupakan fungsi sederhana yang didefinisikan di dalam fungsi lain. Di sisa artikel ini, kita akan menggunakan kata "fungsi dalam" dan "fungsi bersarang" secara bergantian Ada berbagai alasan mengapa seseorang ingin membuat fungsi di dalam fungsi lain. Fungsi dalam dapat mengakses variabel dalam lingkup terlampir. Pada artikel ini, kita akan menjelajahi berbagai aspek fungsi dalam di Python Mendefinisikan Fungsi DalamUntuk mendefinisikan fungsi dalam di Python, kita cukup membuat fungsi di dalam fungsi lain menggunakan kata kunci Keluaran
Dalam contoh di atas, _0 telah didefinisikan di dalam 1, menjadikannya fungsi dalam. Untuk menelepon _0, pertama-tama kita harus menelepon 1. 1 kemudian akan melanjutkan dan memanggil 0 seperti yang telah ditentukan di dalamnyaPenting untuk disebutkan bahwa fungsi luar harus dipanggil agar fungsi dalam dapat dijalankan. Jika fungsi luar tidak dipanggil, fungsi dalam tidak akan pernah dijalankan. Untuk mendemonstrasikan ini, ubah kode di atas menjadi kode berikut dan jalankan Kode tidak akan menghasilkan apa-apa saat dijalankan Ini contoh lainnya _Keluaran _Kode mengembalikan perkalian dua angka, yaitu 10 dan 5. Contoh menunjukkan bahwa fungsi dalam dapat mengakses variabel yang dapat diakses di fungsi luar Sejauh ini, Anda telah melihat bahwa kita dapat mengakses variabel dari fungsi luar di dalam fungsi dalam. Bagaimana jika kita mencoba mengubah variabel fungsi luar dari dalam fungsi dalam? Keluaran _Keluaran menunjukkan bahwa kita dapat menampilkan nilai variabel yang didefinisikan di dalam fungsi luar dari fungsi dalam, tetapi tidak mengubahnya. Pernyataan _6 membantu kami membuat variabel baru 7 di dalam fungsi dalam 0 daripada mengubah nilai variabel 7 yang didefinisikan dalam fungsi luar 1Di bagian selanjutnya, kita akan membahas alasan utama mengapa kita menggunakan fungsi batin di Python Mengapa menggunakan Fungsi Dalam?EnkapsulasiSuatu fungsi dapat dibuat sebagai fungsi dalam untuk melindunginya dari segala sesuatu yang terjadi di luar fungsi. Dalam hal ini, fungsi tersebut akan disembunyikan dari lingkup global. Ini sebuah contoh Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan menyertakan lembar contekan. Hentikan perintah Googling Git dan benar-benar pelajari itu Keluaran
Pada kode di atas, kami mencoba memanggil fungsi 1, tetapi kami malah mendapatkan kesalahanSekarang, beri komentar pada panggilan ke _1 dan batalkan komentar pada panggilan ke 3 seperti yang ditunjukkan di bawah iniKeluaran
Skrip di atas menunjukkan bahwa fungsi dalam, yaitu 1 dilindungi dari apa yang terjadi di luarnya karena variabel 7 di dalam fungsi 6 tidak terpengaruh oleh nilai yang diteruskan ke parameter 7 dari fungsi luar. Dengan kata lain, variabel di dalam fungsi dalam tidak dapat diakses di luarnya. Ada keuntungan besar dengan pola desain seperti itu. Setelah memeriksa semua argumen di fungsi luar, kita dapat dengan aman melewati pemeriksaan kesalahan di dalam fungsi dalamPenutupan dan Fungsi PabrikSemua contoh yang telah kita lihat sampai sekarang hanya berisi fungsi biasa yang telah disarangkan di dalam fungsi lain. Dimungkinkan bagi kita untuk menulis fungsi seperti itu dengan cara lain alih-alih menyarangkannya di dalam fungsi lain. Kami tidak memiliki alasan khusus mengapa kami harus membuat mereka bersarang Namun, untuk kasus penutupan, seseorang harus menggunakan fungsi bersarang Kami dapat mengikat/meneruskan data ke suatu fungsi tanpa harus meneruskan data ke fungsi melalui parameter. Ini dilakukan dengan menggunakan penutupan. Ini adalah objek fungsi yang dapat mengingat nilai-nilai dalam cakupan terlampir bahkan ketika tidak tersedia dalam memori. Ini berarti bahwa kita memiliki penutupan saat fungsi bersarang mereferensikan nilai yang berada dalam cakupan terlampir Tujuan dari penutupan adalah untuk membuat fungsi bagian dalam mengingat keadaan lingkungannya saat dipanggil, meskipun tidak ada dalam memori. Penutupan disebabkan oleh fungsi batin, tetapi itu bukan fungsi batin. Penutupan bekerja dengan menutup variabel lokal pada tumpukan, yang tetap ada setelah pembuatan tumpukan selesai dijalankan Berikut ini adalah kondisi yang harus dipenuhi untuk membuat penutupan dengan Python
Perhatikan contoh berikut
Keluaran
Kode di atas menunjukkan bahwa dengan penutupan, kami dapat membuat dan memanggil fungsi dari luar ruang lingkupnya melalui penerusan fungsi. Cakupan _0 hanya di dalam 1. Namun, dengan penggunaan closure, kami dapat memperluas cakupan ini dan memanggilnya dari luar cakupannyaFungsi dalam membantu kita dalam mendefinisikan fungsi pabrik. Fungsi pabrik adalah fungsi yang membuat objek lain. Sebagai contoh Keluaran
Pada script di atas, dari fungsi _0, kita telah membuat dua objek lainnya, 1 dan 2. Ini menjadikan _0 sebagai fungsi pabrik karena menghasilkan fungsi 1 dan 2 untuk kita menggunakan parameter yang kita berikanKesimpulanFungsi dalam hanyalah sebuah fungsi yang didefinisikan di dalam fungsi lain. Fungsi dalam dapat mengakses variabel yang telah didefinisikan dalam lingkup fungsi luar, tetapi tidak dapat mengubahnya. Ada sejumlah alasan mengapa kita mungkin perlu membuat fungsi batin. Misalnya, fungsi dalam dilindungi dari apa yang terjadi di luarnya. Fungsi dalam juga merupakan cara yang baik untuk membuat penutupan dengan Python Bisakah Anda memanggil fungsi di dalam fungsi Python?Dengan Python, setiap fungsi tertulis dapat dipanggil oleh fungsi lain . Perhatikan bahwa ini bisa menjadi cara paling elegan untuk memecah masalah menjadi potongan-potongan kecil.
Bagaimana Anda memanggil fungsi di bawah fungsi?Untuk memanggil fungsi di dalam fungsi lain, tentukan fungsi dalam di dalam fungsi luar dan aktifkan . Saat menggunakan kata kunci fungsi, fungsi diangkat ke bagian atas ruang lingkup dan dapat dipanggil dari mana saja di dalam fungsi luar. Disalin.
Bagaimana Anda mendefinisikan fungsi di bawah fungsi di Python?Jika Anda mendefinisikan fungsi di dalam fungsi lain, Anda membuat fungsi dalam, juga dikenal sebagai fungsi bersarang . Di Python, fungsi dalam memiliki akses langsung ke variabel dan nama yang Anda tentukan dalam fungsi terlampir.
Bisakah kita memanggil fungsi di bawah fungsi?Memanggil fungsi dari dalam dirinya sendiri disebut rekursi dan jawaban sederhananya adalah, ya. |