Pengaturcaraan fungsi Python: mengembalikan fungsi dan fungsi tanpa nama

WBOY
Lepaskan: 2023-04-12 14:37:20
ke hadapan
1310 orang telah melayarinya

Pengaturcaraan fungsi Python: mengembalikan fungsi dan fungsi tanpa nama


Return function

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
Salin selepas log masuk

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
Salin selepas log masuk

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>
Salin selepas log masuk

Dan apabila fungsi a dipanggil, proses kuadratur dilaksanakan:

>>> a()
24
Salin selepas log masuk

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.

Fungsi tanpa nama

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]
Salin selepas log masuk

Seperti yang dapat dilihat daripada perbandingan, tanpa nama fungsi lambda x: x*x* x bersamaan dengan:

def f(x):
 return x * x * x
Salin selepas log masuk

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
Salin selepas log masuk

Begitu juga, fungsi tanpa nama sebagai fungsi juga boleh digunakan sebagai fungsi pulangan:

def f(x):
 return lambda: x * x * x
Salin selepas log masuk

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!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan