Bagaimanakah ungkapan lambda menangkap pembolehubah luaran?

WBOY
Lepaskan: 2024-04-25 17:24:01
asal
531 orang telah melayarinya

Ungkapan lambda menangkap pembolehubah luaran dengan membuat rujukan kepada pembolehubah dalam skop luaran Langkah-langkah khusus termasuk: Apabila ungkapan lambda menggunakan pembolehubah luaran, ia menangkap pembolehubah. Ungkapan Lambda hanya boleh menangkap pembolehubah tempatan dalam fungsi luaran, bukan pembolehubah global. Jika pembolehubah luaran ditetapkan semula, rujukan yang ditangkap dalam ungkapan lambda juga dikemas kini.

lambda 表达式如何捕获外部变量?

Cara ungkapan lambda menangkap pembolehubah luaran

ungkapan lambda ialah fungsi tanpa nama yang boleh mengakses pembolehubah dalam skop yang disertakan. Apabila ungkapan lambda menangkap pembolehubah luaran, ia mencipta rujukan kepada pembolehubah itu.

Syntax

lambda 参数列表: 表达式
Salin selepas log masuk

Tangkap pembolehubah luaran

Jika ungkapan lambda menggunakan pembolehubah yang diisytiharkan dalam skop luaran, ia akan ditangkap.

# 定义外部函数
def outer_function():
    outer_variable = 10

    # 定义 lambda 表达式,捕获 outer_variable
    my_lambda = lambda: outer_variable

# 调用 lambda 表达式,获取外部变量
result = my_lambda()
print(result)  # 输出: 10
Salin selepas log masuk

Nota

Ekspresi lambda hanya boleh menangkap pembolehubah tempatan dalam fungsi luaran, bukan pembolehubah global. Selain itu, jika pembolehubah luaran ditetapkan semula, rujukan yang ditangkap dalam ungkapan lambda juga dikemas kini.

Contoh praktikal

# 使用 lambda 表达式对列表中的数字进行排序
numbers = [4, 2, 8, 1, 6]

# 根据数字的平方对列表进行排序
sorted_numbers = sorted(numbers, key=lambda x: x**2)

# 打印排序后的列表
print(sorted_numbers)  # 输出: [1, 4, 2, 6, 8]
Salin selepas log masuk

Dalam contoh ini, ungkapan lambda menangkap kuasa dua x 变量,并计算 x dalam skop luar sebagai asas pengisihan.

Atas ialah kandungan terperinci Bagaimanakah ungkapan lambda menangkap pembolehubah luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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