Fungsi dalam, juga dikenal sebagai fungsi bersarang, adalah fungsi yang Anda tentukan di dalam fungsi lain. Di Python, fungsi semacam ini memiliki akses langsung ke variabel dan nama yang ditentukan dalam fungsi terlampir. Fungsi bagian dalam memiliki banyak kegunaan, terutama sebagai pabrik penutup dan fungsi dekorator Show
Dalam tutorial ini, Anda akan mempelajari caranya
Bonus Gratis. Klik di sini untuk mendapatkan Cheat Sheet Python dan mempelajari dasar-dasar Python 3, seperti bekerja dengan tipe data, kamus, daftar, dan fungsi Python Membuat Fungsi Dalam PythonFungsi yang didefinisikan di dalam fungsi lain dikenal sebagai fungsi dalam atau fungsi bersarang. Di Python, fungsi semacam ini dapat diakses di fungsi terlampir. Berikut adalah contoh cara membuat fungsi batin dengan Python >>> ________0______ Dalam kode ini, Anda mendefinisikan _6 di dalam 7 untuk mencetak pesan 8 ke layar. Untuk melakukan itu, Anda memanggil 6 pada baris terakhir 7. Ini adalah cara tercepat untuk menulis fungsi dalam dengan Python. Namun, fungsi dalam memberikan banyak kemungkinan menarik di luar apa yang Anda lihat dalam contoh iniFitur inti dari fungsi dalam adalah kemampuannya untuk mengakses variabel dan objek dari fungsi penutupnya bahkan setelah fungsi ini dikembalikan. Fungsi penutup menyediakan ruang nama yang dapat diakses oleh fungsi bagian dalam >>> _Sekarang Anda dapat meneruskan string sebagai argumen ke 7, dan 6 akan mengakses argumen itu melalui nama 3. Nama ini, bagaimanapun, didefinisikan dalam 7. Nama yang Anda tetapkan dalam lingkup lokal dari fungsi luar dikenal sebagai nama nonlokal. Mereka bukan lokal dari sudut pandang _6Berikut adalah contoh cara membuat dan menggunakan fungsi dalam yang lebih rumit >>> _Di _6, pertama-tama Anda memvalidasi input data untuk memastikan bahwa pengguna Anda memberikan bilangan bulat yang sama dengan atau lebih besar dari nol. Kemudian Anda mendefinisikan fungsi dalam rekursif yang disebut 7 yang melakukan perhitungan faktorial dan mengembalikan hasilnya. Langkah terakhir adalah menelepon _7Catatan. Untuk pembahasan yang lebih mendetail tentang fungsi rekursi dan rekursif, lihat Berpikir Secara Rekursif dengan Python dan Rekursi dengan Python. Sebuah Pengantar Keuntungan utama menggunakan pola ini adalah, dengan melakukan semua pemeriksaan argumen di fungsi luar, Anda dapat dengan aman melewati pemeriksaan kesalahan di fungsi dalam dan fokus pada komputasi yang ada. Hilangkan iklanMenggunakan Fungsi Dalam. DasarKasus penggunaan fungsi dalam Python bervariasi. Anda dapat menggunakannya untuk menyediakan enkapsulasi dan menyembunyikan fungsi Anda dari akses eksternal, Anda dapat menulis fungsi dalam pembantu, dan Anda juga dapat membuat penutup dan dekorator. Di bagian ini, Anda akan mempelajari tentang dua kasus penggunaan fungsi dalam sebelumnya, dan di bagian selanjutnya, Anda akan mempelajari cara membuat dan Menyediakan EnkapsulasiKasus penggunaan umum fungsi dalam muncul saat Anda perlu melindungi, atau menyembunyikan, fungsi tertentu dari semua yang terjadi di luarnya sehingga fungsi tersebut benar-benar tersembunyi dari lingkup global. Perilaku semacam ini umumnya dikenal sebagai enkapsulasi Inilah contoh yang menyoroti konsep itu >>> _Dalam contoh ini, Anda tidak dapat mengakses ________9______9 secara langsung. Jika Anda mencoba melakukannya, maka Anda mendapatkan 0. Itu karena _1 benar-benar menyembunyikan 9, mencegah Anda mengaksesnya dari lingkup globalMembangun Fungsi Batin PembantuTerkadang Anda memiliki fungsi yang menjalankan potongan kode yang sama di beberapa tempat di dalam tubuhnya. Misalnya, Anda ingin menulis sebuah fungsi untuk memproses file CSV yang berisi informasi tentang hotspot Wi-Fi di New York City. Untuk mengetahui jumlah total hotspot di New York serta perusahaan yang menyediakan sebagian besar, Anda membuat skrip berikut
Di sini, 3 mengambil 4 sebagai argumen. Fungsi memeriksa apakah _4 adalah jalur berbasis string ke file fisik atau. Kemudian ia memanggil fungsi batin pembantu 6, yang mengambil objek file dan melakukan operasi berikut
Jika Anda menjalankan fungsi, maka Anda mendapatkan output berikut >>> _Apakah Anda memanggil _3 dengan jalur file berbasis string atau dengan objek file, Anda mendapatkan hasil yang samaMenggunakan Fungsi Pembantu Dalam vs PribadiBiasanya, Anda membuat fungsi batin pembantu seperti 6 saat Anda ingin menyediakan enkapsulasi. Anda juga dapat membuat fungsi dalam jika Anda pikir Anda tidak akan memanggilnya di tempat lain selain dari fungsi yang memuatnyaMeskipun menulis fungsi pembantu Anda sebagai fungsi dalam mencapai hasil yang diinginkan, Anda mungkin akan lebih baik jika mengekstraknya sebagai fungsi tingkat atas. Dalam hal ini, Anda dapat menggunakan garis bawah di depan ( 1) pada nama fungsi untuk menunjukkan bahwa fungsi tersebut bersifat pribadi untuk modul atau kelas saat ini. Ini akan memungkinkan Anda untuk mengakses fungsi pembantu Anda dari tempat lain di modul atau kelas saat ini dan menggunakannya kembali sesuai kebutuhanMengekstrak fungsi dalam ke fungsi pribadi tingkat atas dapat membuat kode Anda lebih bersih dan lebih mudah dibaca. Praktek ini dapat menghasilkan fungsi yang akibatnya menerapkan prinsip tanggung jawab tunggal Mempertahankan Status Dengan Fungsi Dalam. PenutupanDalam Python, fungsinya adalah. Ini berarti mereka setara dengan objek lain, seperti angka, string, daftar, tupel, modul, dan sebagainya. Anda dapat membuat atau menghancurkannya secara dinamis, menyimpannya dalam struktur data, meneruskannya sebagai argumen ke fungsi lain, menggunakannya sebagai nilai kembalian, dan seterusnya Anda juga dapat membuat fungsi tingkat tinggi dengan Python. Fungsi tingkat tinggi adalah fungsi yang beroperasi pada fungsi lain dengan mengambilnya sebagai argumen, mengembalikannya, atau keduanya Semua contoh fungsi dalam yang telah Anda lihat sejauh ini adalah fungsi biasa yang kebetulan bersarang di dalam fungsi lain. Kecuali jika Anda perlu menyembunyikan fungsi Anda dari dunia luar, tidak ada alasan khusus bagi mereka untuk bersarang. Anda dapat mendefinisikan fungsi tersebut sebagai fungsi tingkat atas pribadi, dan Anda sebaiknya melakukannya Di bagian ini, Anda akan belajar tentang fungsi penutupan pabrik. Penutupan adalah fungsi yang dibuat secara dinamis yang dikembalikan oleh fungsi lain. Fitur utama mereka adalah bahwa mereka memiliki akses penuh ke variabel dan nama yang ditentukan di namespace lokal tempat penutupan dibuat, meskipun fungsi penutup telah kembali dan selesai dieksekusi Dalam Python, saat Anda mengembalikan objek fungsi bagian dalam, interpreter mengemas fungsi beserta lingkungan atau penutupannya. Objek fungsi menyimpan snapshot dari semua variabel dan nama yang ditentukan dalam cakupannya. Untuk menentukan penutupan, Anda perlu melakukan tiga langkah
Dengan pengetahuan dasar ini, Anda dapat langsung mulai membuat penutupan dan memanfaatkan fitur utamanya. mempertahankan keadaan antara pemanggilan fungsi Hilangkan iklanMempertahankan Negara dalam PenutupanPenutupan menyebabkan fungsi dalam mempertahankan keadaan lingkungannya saat dipanggil. Penutupan bukanlah fungsi bagian dalam itu sendiri tetapi fungsi bagian dalam bersama dengan lingkungan yang melingkupinya. Penutupan menangkap variabel dan nama lokal dalam fungsi yang berisi dan menyimpannya Perhatikan contoh berikut
Inilah yang terjadi dalam fungsi ini
Dari mana _3 mendapatkan nilai 8? . Dalam contoh ini, _3 mendapatkan nilai 8 dari fungsi luar, 2. Inilah yang dilakukan Python saat Anda memanggil 2
Dengan cara ini, saat Anda memanggil instance 3 dikembalikan oleh 2, Anda akan melihat bahwa fungsi mengingat nilai 8>>> _Dalam contoh ini, 1 mengingat bahwa 2, dan 3 mengingat bahwa 4. Perhatikan bahwa kedua penutupan mengingat 8 masing-masing di antara panggilanSekarang pertimbangkan contoh lain >>> _Fungsi bagian dalam memeriksa apakah pengguna tertentu memiliki izin yang benar untuk mengakses halaman tertentu. Anda dapat dengan cepat memodifikasi ini untuk menarik pengguna dalam sesi untuk memeriksa apakah mereka memiliki kredensial yang benar untuk mengakses rute tertentu Alih-alih memeriksa apakah pengguna sama dengan 6, Anda dapat meminta database SQL untuk memeriksa izin dan kemudian mengembalikan tampilan yang benar bergantung pada apakah kredensial sudah benarBiasanya Anda akan membuat penutupan yang tidak mengubah status penutupannya, atau penutupan dengan status penutupan statis, seperti yang Anda lihat pada contoh di atas. Namun, Anda juga dapat membuat penutupan yang mengubah status penyertaannya dengan menggunakan objek yang dapat diubah, seperti kamus, set, atau daftar Misalkan Anda perlu menghitung rata-rata kumpulan data. Data datang dalam aliran pengukuran berturut-turut dari parameter yang sedang dianalisis, dan Anda memerlukan fungsi Anda untuk mempertahankan pengukuran sebelumnya di antara panggilan. Dalam hal ini, Anda dapat membuat kode fungsi penutupan pabrik seperti ini >>> _Penutupan yang ditetapkan ke 7 mempertahankan status 8 antara panggilan yang berurutan. Meskipun Anda mendefinisikan _8 di 0, itu masih tersedia di penutupan, sehingga Anda dapat memodifikasinya. Dalam hal ini, _8 berfungsi sebagai semacam keadaan penutup dinamisMemodifikasi Status PenutupanBiasanya, variabel penutupan benar-benar tersembunyi dari dunia luar. Namun, Anda dapat menyediakan fungsi dalam pengambil dan penyetel untuk mereka >>> 0Di sini, _2 mengembalikan penutupan yang mewakili objek 3. Objek ini memiliki fungsi getter dan setter terpasang. Anda dapat menggunakan fungsi tersebut untuk mendapatkan akses baca dan tulis ke variabel 4 dan 5, yang didefinisikan dalam lingkup terlampir dan dikirimkan dengan penutupMeskipun fungsi ini membuat penutupan yang mungkin bekerja lebih cepat daripada kelas yang setara, Anda perlu menyadari bahwa teknik ini tidak menyediakan fitur utama, termasuk pewarisan, properti, deskriptor, dan metode kelas dan statis. Jika Anda ingin mendalami teknik ini lebih dalam, periksa Alat Sederhana untuk Mensimulasikan Kelas Menggunakan Penutupan dan Cakupan Bersarang (Resep Python) Hilangkan iklanMenambahkan Perilaku Dengan Fungsi Dalam. DekoratorDekorator python adalah kasus penggunaan populer dan nyaman lainnya untuk fungsi dalam, terutama untuk penutupan. Dekorator adalah fungsi tingkat tinggi yang menggunakan callable (fungsi, metode, kelas) sebagai argumen dan mengembalikan callable lainnya Anda dapat menggunakan fungsi dekorator untuk menambahkan tanggung jawab ke callable yang sudah ada secara dinamis dan memperluas perilakunya secara transparan tanpa memengaruhi atau memodifikasi callable asli Catatan. Untuk detail lebih lanjut tentang objek yang dapat dipanggil Python, lihat di dokumentasi Python dan gulir ke bawah ke “Jenis yang dapat dipanggil. ” Untuk membuat dekorator, Anda hanya perlu mendefinisikan callable (fungsi, metode, atau kelas) yang menerima objek fungsi sebagai argumen, memprosesnya, dan mengembalikan objek fungsi lain dengan perilaku tambahan. Setelah Anda memiliki fungsi dekorator, Anda dapat menerapkannya ke semua callable. Untuk melakukannya, Anda perlu menggunakan simbol at ( 6) di depan nama dekorator dan kemudian menempatkannya pada barisnya sendiri tepat sebelum callable yang dihias _1Sintaks ini membuat 7 otomatis mengambil 8 sebagai argumen dan memprosesnya di dalam tubuhnya. Operasi ini adalah singkatan untuk tugas berikut _2Berikut adalah contoh cara membuat fungsi dekorator untuk menambahkan fungsionalitas baru ke fungsi yang sudah ada >>> 3Dalam hal ini, Anda menggunakan _9 untuk menghias 0. Ini menambahkan fungsionalitas baru ke fungsi yang didekorasi. Sekarang ketika Anda memanggil _0, alih-alih hanya mencetak 8, fungsi Anda mencetak dua pesan baruKasus penggunaan untuk dekorator Python bervariasi. Inilah beberapa di antaranya
Praktik umum untuk men-debug kode Python adalah menyisipkan panggilan ke 3 untuk memeriksa nilai variabel, untuk mengonfirmasi bahwa blok kode dijalankan, dan seterusnya. Menambah dan menghapus panggilan ke _3 dapat mengganggu, dan Anda berisiko melupakan beberapa di antaranya. Untuk mencegah situasi ini, Anda dapat menulis dekorator seperti ini>>> 4Contoh ini memberikan 5, yang merupakan dekorator yang menggunakan fungsi sebagai argumen dan mencetak tanda tangannya dengan nilai saat ini dari setiap argumen dan nilai pengembalian yang sesuai. Anda dapat menggunakan dekorator ini untuk men-debug fungsi Anda. Setelah Anda mendapatkan hasil yang diinginkan, Anda dapat menghapus panggilan dekorator 6, dan fungsi Anda akan siap untuk langkah selanjutnyaCatatan. Jika Anda tertarik untuk mempelajari lebih dalam tentang cara kerja 7 dan 8 di Python, lihat Python args dan kwargs. DemistifikasiInilah contoh terakhir cara membuat dekorator. Kali ini, Anda akan menerapkan kembali 2 sebagai fungsi dekorator>>> 5Versi _2 ini menghasilkan hasil yang sama dengan yang Anda dapatkan pada implementasi aslinya. Dalam hal ini, Anda menggunakan penutupan untuk mengingat 8 dan dekorator yang mengembalikan versi modifikasi dari fungsi masukan, 2Di sini, dekorator perlu mengambil argumen ( 8), jadi Anda perlu memiliki dua tingkat fungsi dalam yang bersarang. Level pertama diwakili oleh 3, yang mengambil fungsi yang didekorasi sebagai argumen. Tingkat kedua diwakili oleh _5, yang mengemas argumen 8 di 7, membuat perhitungan akhir pangkat, dan mengembalikan hasilnyaHilangkan iklanKesimpulanJika 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. Ini memberikan mekanisme bagi Anda untuk membuat fungsi pembantu, penutupan, dan dekorator Dalam tutorial ini, Anda belajar caranya
Anda sekarang siap memanfaatkan banyak kegunaan fungsi dalam dalam kode Anda sendiri. Jika Anda memiliki pertanyaan atau komentar, pastikan untuk membagikannya di bagian komentar di bawah Tandai sebagai Selesai Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Fungsi Dalam Python 🐍 Trik Python 💌 Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python Kirimi Saya Trik Python » Tentang Leodanis Pozo Ramos Leodanis adalah seorang insinyur industri yang menyukai Python dan pengembangan perangkat lunak. Dia adalah pengembang Python otodidak dengan pengalaman lebih dari 6 tahun. Dia adalah seorang penulis teknis yang rajin dengan semakin banyak artikel yang diterbitkan di Real Python dan situs lainnya » Lebih lanjut tentang LeodanisSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Aldren Kerekan Geir Arne Jim Joanna Yakub Michael Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista Tingkatkan Keterampilan Python Anda » Guru Keterampilan Python Dunia Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista Tingkatkan Keterampilan Python Anda » Bagaimana menurut anda? Nilai artikel ini Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari? Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami Bagaimana Anda meneruskan daftar ke fungsi sebagai argumen di Python?Dengan Python, Anda dapat membongkar list , tuple , dict (kamus) dan meneruskan elemennya untuk berfungsi sebagai argumen dengan menambahkan * ke daftar atau tuple dan ** ke kamus saat memanggil . .
Bagaimana cara menggunakan output dari suatu fungsi di fungsi lain Python?Tampilkan aktivitas pada postingan ini. . RETURN output dari fungsi A. def A(bil1,bil2). num3 = num1+num2 mengembalikan num3 Saat Anda memanggil fungsi A, simpan hasilnya di variabel lain. hasil = A(12,14). Saat memanggil fungsi B, alih-alih num3, berikan nilai yang disimpan di 'hasil'. Argumen kedua bisa berupa angka apa saja 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. |