Apa yang dipanggil fungsi return, seperti namanya, adalah menggunakan fungsi sebagai nilai pulangan. Selain mengambil fungsi sebagai parameter, fungsi tertib tinggi juga boleh mengembalikan fungsi sebagai hasil. Mari kita laksanakan pendaraban berterusan bagi parameter pembolehubah Fungsi kuadratur boleh ditakrifkan sebagai:
def calc_fac(*args): fx = 0 for n in args: fx = fx * n return fx
Banyak kali apabila fungsi kuadratur ditakrifkan, kita tidak perlu mendarabnya dengan segera, tetapi akan mengiranya mengikut. ke yang berikut Kira dan panggil semula. Pada masa ini, kita tidak boleh mengembalikan hasil fungsi, tetapi mengembalikan fungsi itu sendiri, seperti yang ditunjukkan di bawah:
def lazy_fac(*args): def fac(): fx = 0 for n in args: fx = fx * n return fx return fac
Selepas mentakrifkan semula fungsi kuadratur, apabila kita memanggil lazy_fac(), apa yang dikembalikan ialah Ia bukan hasil kuadratur, tetapi fungsi kuadratur:
>>> a=lazy_fac(1,2,3,4) >>> a <function lazy_fac.<locals>.fac at 0x002a5dr42>
Dan apabila fungsi a dipanggil, proses kuadratur dilaksanakan:
>>> a() 24
Dalam kes ini, kita The fungsi fac ditakrifkan dalam fungsi lazy_fac boleh dipanggil fungsi dalaman, manakala lazy_fac ialah fungsi luaran. Fac fungsi dalaman boleh merujuk kepada parameter dan pembolehubah setempat bagi fungsi luaran. Parameter dan pembolehubah disimpan dalam fungsi dalaman yang akhirnya kami kembalikan. Struktur program ini dipanggil penutupan dalam Python.
Dalam struktur penutupan, apabila fungsi kembali sebagai hasilnya, proses fungsi tidak dilaksanakan serta-merta, tetapi dilaksanakan selepas kita memanggil a().
Ringkasnya, dalam pengaturcaraan berfungsi, selain mengembalikan hasil pengiraan, fungsi juga boleh mengembalikan fungsi yang tidak dilaksanakan. Apabila mengembalikan fungsi, sentiasa ingat bahawa fungsi itu belum dilaksanakan, dan cuba untuk tidak memperkenalkan pembolehubah seperti pembolehubah gelung yang boleh menyebabkan perubahan dalam fungsi yang dikembalikan.
Apabila kita lulus dalam fungsi atau struktur kod terlalu kompleks, kita boleh menggunakan fungsi tanpa nama dan bukannya definisi fungsi eksplisit. Pada masa ini, fungsi tanpa nama akan memudahkan struktur kod dan menjadikannya lebih halus.
Ambil fungsi peta yang diperkenalkan sebelum ini sebagai contoh untuk mengira x3 dan lihat fungsi fungsi tanpa nama:
>>> list(map(lambda x: x * x * x, [1, 2, 3])) [1, 8, 27]
Seperti yang dapat dilihat daripada perbandingan, tanpa nama fungsi lambda x: x*x* x bersamaan dengan:
def f(x): return x * x * x
lambda digunakan sebagai kata kunci fungsi tanpa nama dan x sebelum kolon menunjukkan parameter fungsi tanpa nama. Fungsi tanpa nama hanya boleh mempunyai satu ungkapan, dan tidak perlu menulis pulangan seperti mentakrifkan fungsi. Oleh kerana fungsi tanpa nama tidak mempunyai nama fungsi, tidak perlu risau tentang konflik nama fungsi semasa digunakan. Sebagai objek fungsi, fungsi tanpa nama juga mematuhi peraturan untuk memberikan nilai kepada pembolehubah:
>>> fx = lambda x: x * x * x >>> fx <function <lambda> at 0x101c6ef28> >>> f(4) 64
Begitu juga, fungsi tanpa nama sebagai fungsi juga boleh digunakan sebagai fungsi pulangan:
def f(x): return lambda: x * x * x
Atas ialah kandungan terperinci Pengaturcaraan fungsi Python: mengembalikan fungsi dan fungsi tanpa nama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!