Rumah >pembangunan bahagian belakang >Tutorial Python >Panduan untuk fungsi python lambda, dengan contoh

Panduan untuk fungsi python lambda, dengan contoh

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-18 10:02:12168semak imbas

Panduan untuk fungsi python lambda, dengan contoh

Artikel ini memperkenalkan fungsi python lambda dan bagaimana menulis dan menggunakannya.

Walaupun Python adalah bahasa pengaturcaraan berorientasikan objek, fungsi Lambda berguna apabila anda melakukan pelbagai jenis pengaturcaraan berfungsi.

Nota: Artikel ini akan menganggap anda sudah memahami pengaturcaraan Python dan cara menggunakan fungsi biasa. Ia juga diandaikan bahawa anda mempunyai Python 3.8 atau ke atas yang dipasang pada peranti anda. Takeaways Key

Fungsi Python Lambda Python adalah tanpa nama, biasanya fungsi satu baris yang ditakrifkan menggunakan kata kunci 'lambda', yang sering digunakan dalam fungsi pesanan yang lebih tinggi seperti peta () dan penapis (). Mereka boleh mengendalikan pemahaman senarai dan berguna untuk rendering bersyarat dalam kerangka UI.

    Fungsi Lambda boleh mengambil beberapa argumen kedudukan, hujah kata kunci, atau kedua -duanya, diikuti oleh kolon dan hanya satu ungkapan. Mereka juga dilaksanakan seperti Ekspresi Fungsi Segera (IIFES) dalam JavaScript.
  • Fungsi Lambda boleh digunakan dalam pemahaman senarai dan secara bertulis ekspresi ternary di Python, yang menghasilkan hasil berdasarkan keadaan tertentu. Mereka juga boleh digunakan dalam fungsi pesanan yang lebih tinggi, yang merupakan fungsi yang menerima fungsi lain sebagai argumen dan fungsi pulangan sebagai output.
  • Walaupun python lambdas dapat mengurangkan jumlah baris kod, mereka harus digunakan dengan berhati -hati dan hanya apabila perlu. Kebolehbacaan Kod harus diprioritaskan atas kesimpulan. Mereka tidak disyorkan untuk digunakan apabila terdapat banyak ungkapan, kerana ia boleh membuat kod tidak boleh dibaca.
  • menerangkan fungsi python lambda
Dalam Python, fungsi boleh mengambil satu atau lebih argumen kata kunci atau kata kunci, senarai argumen yang berubah -ubah, senarai pembolehubah argumen kata kunci, dan sebagainya. Mereka boleh diluluskan ke dalam fungsi pesanan yang lebih tinggi dan dikembalikan sebagai output. Fungsi tetap boleh mempunyai beberapa ungkapan dan pelbagai kenyataan. Mereka juga sentiasa mempunyai nama.

Fungsi python lambda hanyalah fungsi tanpa nama. Ia juga boleh dipanggil fungsi

tanpa nama

. Fungsi python biasa ditakrifkan oleh kata kunci DEF. Fungsi Lambda di Python biasanya terdiri daripada kata kunci Lambda, sebilangan argumen, dan satu ungkapan.

Nota: Istilah Fungsi Lambda, Ekspresi Lambda, dan Lambda boleh digunakan secara bergantian, bergantung kepada bahasa pengaturcaraan atau pengaturcara. Fungsi Lambda kebanyakannya digunakan sebagai satu-liners. Mereka digunakan dengan kerap dalam fungsi pesanan yang lebih tinggi seperti peta () dan penapis (). Ini kerana fungsi tanpa nama diluluskan sebagai hujah kepada fungsi pesanan yang lebih tinggi, yang bukan sahaja dilakukan dalam pengaturcaraan Python.

Fungsi Lambda juga sangat berguna untuk mengendalikan pemahaman senarai di Python - dengan pelbagai pilihan untuk menggunakan ekspresi python lambda untuk tujuan ini.

Lambdas sangat bagus apabila digunakan untuk bersyarat bersyarat dalam kerangka UI seperti TKInter, Wxpython, Kivy, dan lain -lain. Walaupun kerja -kerja kerangka Python GUI tidak diliputi dalam artikel ini, beberapa coretan kod menunjukkan penggunaan lambda yang berat berdasarkan interaksi pengguna.

perkara yang perlu difahami sebelum menyelidiki fungsi python lambda

Kerana Python adalah bahasa pengaturcaraan berorientasikan objek, semuanya adalah objek. Kelas python, contoh kelas, modul dan fungsi semuanya dikendalikan sebagai objek.

Objek fungsi boleh diberikan kepada pembolehubah.

Ia tidak biasa untuk memberikan pembolehubah kepada fungsi biasa dalam Python. Tingkah laku ini juga boleh digunakan untuk fungsi lambda. Ini kerana mereka berfungsi objek, walaupun mereka tidak bernama:

<span>def greet(name):
</span>    <span>return <span>f'Hello <span>{name}</span>'</span>
</span>
greetings <span>= greet
</span>greetings<span>('Clint')
</span><span>>>>>
</span>Hello Clint

fungsi pesanan lebih tinggi seperti peta (), penapis (), dan mengurangkan ()

kemungkinan anda perlu menggunakan fungsi lambda dalam fungsi terbina dalam seperti penapis () dan peta (), dan juga dengan pengurangan ()-yang diimport dari modul functiols di python, kerana ia bukan fungsi terbina dalam. Secara lalai, fungsi pesanan lebih tinggi adalah fungsi yang menerima fungsi lain sebagai argumen.

Seperti yang dilihat dalam contoh kod di bawah, fungsi normal boleh digantikan dengan lambdas, diluluskan sebagai argumen ke dalam mana-mana fungsi pesanan yang lebih tinggi:

<span>#map function
</span>names <span>= ['Clint', 'Lisa', 'Asake', 'Ada']
</span>
greet_all <span>= list(map(greet, names))
</span><span>print(greet_all)
</span><span>>>>>
</span><span>['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']</span>
<span>#filter function
</span>numbers <span>= [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
</span><span>def multiples_of_three(x):
</span>        <span>return x % 3 == 0
</span>
<span>print(list(filter(multiples_of_three, numbers)))
</span><span>>>>>
</span><span>[12, 15, 18]</span>
<span>#reduce function
</span>numbers <span>= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
</span><span>def add_numbers(x, y):
</span>        <span>return x * y
</span>
<span>print(reduce(add_numbers, numbers))
</span><span>>>>>
</span><span>55</span>

perbezaan antara pernyataan dan ungkapan

Titik kekeliruan yang sama di kalangan pemaju adalah membezakan antara pernyataan dan ungkapan dalam pengaturcaraan.

Pernyataan adalah apa -apa kod yang melakukan sesuatu atau melakukan tindakan - seperti jika atau keadaan semasa.

Ekspresi diperbuat daripada gabungan pembolehubah, nilai, dan pengendali dan menilai nilai baru.

Perbezaan ini penting kerana kita meneroka subjek fungsi Lambda di Python. Ungkapan seperti yang di bawah mengembalikan nilai:

square_of_three <span>= 3 ** 2
</span><span>print(square_of_three)
</span><span>>>>>
</span><span>9</span>

pernyataan kelihatan seperti ini:

<span>for i in range(len(numbers), 0, -1):
</span>        <span>if i % 2 == 1:
</span>                <span>print(i)
</span>        <span>else:
</span>                <span>print('even')
</span><span>>>>>
</span>even <span>9 even 7 even 5 even 3 even 1</span>

cara menggunakan fungsi python lambda

Panduan Gaya Python menyatakan bahawa setiap fungsi lambda mesti bermula dengan kata kunci Lambda (tidak seperti fungsi biasa, yang bermula dengan kata kunci DEF). Sintaks untuk fungsi lambda umumnya seperti ini:

<span>lambda arguments : expression</span>

Fungsi Lambda boleh mengambil beberapa argumen kedudukan, hujah kata kunci, atau kedua -duanya, diikuti oleh kolon dan hanya satu ungkapan. Tidak boleh ada lebih daripada satu ungkapan, kerana ia terhad secara sintaktik. Mari kita periksa contoh ungkapan lambda di bawah:

add_number <span>= lambda x, y : x + y
</span><span>print(add_number(10, 4))
</span><span>>>>>
</span><span>14</span>

Dari contoh di atas, ungkapan lambda diberikan kepada pembolehubah add_number. Panggilan fungsi dibuat dengan lulus hujah, yang menilai hingga 14.

mari kita ambil contoh lain di bawah:

<span>def greet(name):
</span>    <span>return <span>f'Hello <span>{name}</span>'</span>
</span>
greetings <span>= greet
</span>greetings<span>('Clint')
</span><span>>>>>
</span>Hello Clint

Seperti yang dilihat di atas, fungsi lambda menilai kepada 728.0. Gabungan argumen posisional dan kata kunci digunakan dalam fungsi lambda python. Semasa menggunakan hujah -hujah kedudukan, kita tidak dapat mengubah pesanan yang digariskan dalam definisi fungsi. Walau bagaimanapun, kita boleh meletakkan hujah kata kunci di mana -mana kedudukan hanya selepas hujah -hujah kedudukan.

Fungsi Lambda sentiasa dilaksanakan sama seperti Ekspresi Fungsi Segera (IIFES) dalam JavaScript. Ini kebanyakannya digunakan dengan penterjemah python, seperti yang ditunjukkan dalam contoh berikut:

<span>#map function
</span>names <span>= ['Clint', 'Lisa', 'Asake', 'Ada']
</span>
greet_all <span>= list(map(greet, names))
</span><span>print(greet_all)
</span><span>>>>>
</span><span>['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']</span>

Objek fungsi Lambda dibalut dalam kurungan, dan satu lagi kurungan berikutnya dengan argumen yang diluluskan. Sebagai IIFE, ungkapan dinilai dan fungsi mengembalikan nilai yang diberikan kepada pembolehubah.

Fungsi Python Lambda juga boleh dilaksanakan dalam pemahaman senarai. Pemahaman senarai sentiasa mempunyai ungkapan output, yang digantikan oleh fungsi lambda. Berikut adalah beberapa contoh:

<span>#filter function
</span>numbers <span>= [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
</span><span>def multiples_of_three(x):
</span>        <span>return x % 3 == 0
</span>
<span>print(list(filter(multiples_of_three, numbers)))
</span><span>>>>>
</span><span>[12, 15, 18]</span>
<span>#reduce function
</span>numbers <span>= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
</span><span>def add_numbers(x, y):
</span>        <span>return x * y
</span>
<span>print(reduce(add_numbers, numbers))
</span><span>>>>>
</span><span>55</span>

Fungsi Lambda boleh digunakan semasa menulis ekspresi ternary di Python. Ekspresi ternary menghasilkan hasil berdasarkan keadaan tertentu. Semak contoh di bawah:

square_of_three <span>= 3 ** 2
</span><span>print(square_of_three)
</span><span>>>>>
</span><span>9</span>
<span>for i in range(len(numbers), 0, -1):
</span>        <span>if i % 2 == 1:
</span>                <span>print(i)
</span>        <span>else:
</span>                <span>print('even')
</span><span>>>>>
</span>even <span>9 even 7 even 5 even 3 even 1</span>

fungsi lambda dalam fungsi pesanan tinggi

Konsep fungsi pesanan tinggi adalah popular di Python, sama seperti dalam bahasa lain. Mereka adalah fungsi yang menerima fungsi lain sebagai hujah dan juga mengembalikan fungsi sebagai output.

Dalam Python, fungsi pesanan yang lebih tinggi mengambil dua argumen: fungsi, dan ia boleh dimakan. Hujah fungsi digunakan untuk setiap item dalam objek yang boleh dimakan. Oleh kerana kita boleh lulus fungsi sebagai hujah kepada fungsi pesanan yang lebih tinggi, kita sama-sama boleh lulus dalam fungsi lambda.

Berikut adalah beberapa contoh fungsi lambda yang digunakan dengan fungsi peta ():

<span>lambda arguments : expression</span>
add_number <span>= lambda x, y : x + y
</span><span>print(add_number(10, 4))
</span><span>>>>>
</span><span>14</span>

Berikut adalah beberapa fungsi lambda yang digunakan dengan fungsi penapis ():

discounted_price <span>= lambda price, discount = 0.1, vat = 0.02 : price * (1 - discount) * (1 + vat)
</span>
<span>print(discounted_price(1000, vat=0.04, discount=0.3))
</span><span>>>>>
</span><span>728.0</span>
<span>print((lambda x, y: x - y)(45, 18))
</span><span>>>>>
</span><span>27</span>

Berikut adalah beberapa fungsi lambda yang digunakan dengan fungsi mengurangkan ():

my_list <span>= [(lambda x: x * 2)(x) for x in range(10) if x % 2 == 0]
</span><span>print(my_list)
</span><span>>>>>
</span><span>[0, 4, 8, 12, 16]</span>
value <span>= [(lambda x: x % 2 and 'odd' or 'even')(x) for x in my_list] 
</span><span>print(value)
</span><span>>>>>
</span><span>['even', 'even', 'even', 'even', 'even']</span>

Kesimpulan

Walaupun python lambdas dapat mengurangkan jumlah baris kod yang anda tulis, mereka harus digunakan dengan berhati -hati dan hanya apabila perlu. Kebolehbacaan kod anda harus diprioritaskan atas kesimpulan. Untuk lebih banyak kod yang boleh dibaca, selalu gunakan fungsi normal di mana sesuai dengan fungsi Lambda, seperti yang disyorkan oleh Panduan Gaya Python.

Lambdas boleh menjadi sangat berguna dengan ekspresi ternary python, tetapi sekali lagi, cuba untuk tidak mengorbankan kebolehbacaan. Fungsi Lambda benar-benar datang ke dalam mereka sendiri apabila fungsi pesanan lebih tinggi digunakan.

Secara ringkas:

  • python lambdas baik untuk menulis fungsi satu liner.
  • mereka juga digunakan untuk IIFES (segera dipanggil ekspresi fungsi).
  • Lambdas tidak boleh digunakan apabila terdapat banyak ungkapan, kerana ia menjadikan kod tidak boleh dibaca.
  • Python adalah bahasa pengaturcaraan berorientasikan objek, tetapi lambdas adalah cara yang baik untuk meneroka pengaturcaraan berfungsi di Python.

Kandungan yang berkaitan:

  • Memahami penghias python, dengan contoh
  • kursus: Belajar asas pengaturcaraan dengan python
  • Trend dalam Python: Apa yang Panas dalam Bahasa Hangat Hari Ini
  • 5 masalah biasa yang dihadapi oleh pemula python
  • Bagaimana empat pengaturcara mendapat pekerjaan python pertama mereka

Soalan Lazim Mengenai Python Lambdas

Apakah fungsi lambda dalam Python?

Dalam Python, fungsi lambda adalah fungsi tanpa nama, kecil, dan inline yang ditakrifkan menggunakan kata kunci Lambda. Ia sering digunakan untuk operasi jangka pendek di mana definisi fungsi penuh tidak perlu.

Sintaks untuk fungsi lambda adalah: argumen lambda: ungkapan. Sebagai contoh: Lambda X: X 1 mencipta fungsi lambda yang menambah 1 kepada hujahnya.

Fungsi Lambda tidak dikenali dan biasanya digunakan untuk operasi pendek, satu kali. Fungsi tetap ditakrifkan menggunakan kata kunci DEF dan boleh mempunyai pelbagai ungkapan dan pernyataan. Fungsi lambda lambda sesuai untuk operasi pendek, mudah, terutamanya apabila anda memerlukan fungsi untuk tempoh yang singkat dan tidak mahu secara rasmi menentukannya menggunakan def. fungsi?

Fungsi Lambda terhad kerana mereka hanya boleh mengandungi satu ungkapan. Mereka tidak boleh memasukkan pernyataan atau kod multiline.

Bolehkah saya menggunakan fungsi lambda untuk operasi kompleks?

Walaupun fungsi Lambda direka untuk kesederhanaan, mereka boleh melakukan operasi kompleks dalam kekangan ungkapan tunggal. Walau bagaimanapun, untuk logik yang lebih lanjutan dan kompleks, lebih baik menggunakan fungsi biasa.

Atas ialah kandungan terperinci Panduan untuk fungsi python lambda, dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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