Função lambda da gramática avançada do Python

Função lambda da gramática avançada do Python

Em Python, lambdaas funções também são conhecidas como funções anônimas, que são um atalho para definir funções simples. lambdaAs funções, como as funções comuns, podem receber qualquer número de argumentos, mas podem ter apenas uma expressão. lambdaNeste artigo, apresentaremos as funções do Python em detalhes com exemplos e explicações detalhadas .
insira a descrição da imagem aqui

Sintaxe básica das funções lambda

lambdaA sintaxe básica de uma função é a seguinte:

lambda arguments: expression

onde argumentsé um ou mais parâmetros e expressioné uma expressão sobre esses parâmetros. lambdaO valor de retorno da função é expressiono valor de .

Por exemplo, a lambdafunção a seguir recebe um argumento xe retorna xo quadrado:

square = lambda x: x ** 2
print(square(5))  # Output: 25

Finalidade da função lambda

lambdaAs funções geralmente são usadas quando uma função pequena é necessária, mas você não defdeseja definir uma função. Por exemplo, lambdaas funções costumam ser usadas como argumentos para funções de ordem superior, como map()e filter().

  1. map(function, iterable)Uma função recebe uma função e um iterável e retorna um novo iterador que aplica a função a cada elemento do iterável. Por exemplo, o código a seguir usa sum map()para lambdaelevar ao quadrado cada número em uma lista:
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares))  # Output: [1, 4, 9, 16, 25]
  1. filter(function, iterable)A função também recebe uma função e um objeto iterável e retorna um Truenovo iterador contendo todos os elementos para os quais a função retorna um valor. Por exemplo, o código a seguir usa filter()e lambdapara filtrar todos os números ímpares em uma lista:
numbers = [1, 2, 3, 4, 5]
odds = filter(lambda x: x % 2 != 0, numbers)
print(list(odds))  # Output: [1, 3, 5]

funções lambda e classificação

lambdaAs funções também são comumente usadas em operações de classificação em listas ou outras estruturas de dados. As funções internas sorted()e os métodos de lista do Python sort()fornecem um keyparâmetro opcional chamado, por meio do qual podemos especificar uma função para determinar a base da classificação.

Por exemplo, suponha que temos uma lista cujos elementos são dicionários e queremos classificar pelo valor de uma determinada chave no dicionário:

students = [
    {
    
    'name': 'John', 'grade': 90},
    {
    
    'name': 'Jane', 'grade': 88},
    {
    
    'name': 'Dave', 'grade': 92},
]
# 使用lambda函数,按照'grade'键进行排序
students_sorted = sorted(students, key=lambda x: x['grade'])
print(students_sorted) 
# Output: [{'name': 'Jane', 'grade': 88}, {'name': 'John', 'grade': 90}, {'name': 'Dave', 'grade': 92}]

Neste exemplo, lambda x: x['grade']a função usa um dicionário como entrada e retorna o valor correspondente à chave 'nota' no dicionário. sorted()A função usará esse valor de retorno como base para a classificação.

Limitações das funções lambda

Embora lambdaas funções possam nos ajudar a definir rapidamente funções simples, elas também têm algumas limitações:

  1. lambdaUma função pode conter apenas uma expressão e não pode conter lógica complexa ou várias instruções.
  2. lambdaAs funções não podem conter blocos de instrução, como if/else, for, whileetc.
  3. lambdaAs funções não podem acessar variáveis ​​em escopos externos (a menos que essas variáveis ​​sejam globais).

Apesar dessas limitações, lambdaas funções ainda são muito úteis onde funções leves são desejadas. Dominar lambdao uso de funções é um grande benefício para melhorar suas habilidades de programação em Python.

função lambda e função reduzir

O módulo Python functoolsfornece uma reduce()função que aplica uma função binária sequencial a todos os elementos de uma sequência, mesclando as sequências em uma única saída. Esse tipo de operação costuma ser muito comum em linguagens de programação funcional e também é um cenário comum para funções lambda.

Por exemplo, se queremos calcular o produto de todos os elementos de uma lista, podemos usar a reduce()função lambda sum:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # Output: 120

Neste exemplo, lambda x, y: x * ya função recebe dois argumentos e retorna seu produto. reduce()As funções usam essa função para processar sequencialmente os elementos da lista para calcular seu produto.

Vantagens e desvantagens das funções lambda

Antes de terminar este artigo, vamos resumir as vantagens e desvantagens das funções lambda.

vantagem:

  1. Concisão: as funções lambda nos permitem definir funções em uma linha de código, tornando o código mais conciso.
  2. Conveniência: as funções lambda podem ser passadas diretamente como parâmetros para funções de ordem superior sem a necessidade de defini-las antecipadamente.
  3. Adequado para lógica simples: para funções com lógica simples, usar funções lambda é mais intuitivo do que funções definidas por definição.

deficiência:

  1. Funcionalidade limitada: como as funções lambda podem ter apenas uma expressão, a lógica complexa não pode ser implementada.
  2. Legibilidade: se a função lambda for abusada ou usada para implementar uma lógica mais complexa, pode reduzir a legibilidade do código.

função lambda e função reduzir

O módulo Python functoolsfornece uma reduce()função que aplica uma função binária sequencial a todos os elementos de uma sequência, mesclando as sequências em uma única saída. Esse tipo de operação costuma ser muito comum em linguagens de programação funcional e também é um cenário comum para funções lambda.

Por exemplo, se queremos calcular o produto de todos os elementos de uma lista, podemos usar a reduce()função lambda sum:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # Output: 120

Neste exemplo, lambda x, y: x * ya função recebe dois argumentos e retorna seu produto. reduce()As funções usam essa função para processar sequencialmente os elementos da lista para calcular seu produto.

Vantagens e desvantagens das funções lambda

Antes de terminar este artigo, vamos resumir as vantagens e desvantagens das funções lambda.

vantagem:

  1. Concisão: as funções lambda nos permitem definir funções em uma linha de código, tornando o código mais conciso.
  2. Conveniência: as funções lambda podem ser passadas diretamente como parâmetros para funções de ordem superior sem a necessidade de defini-las antecipadamente.
  3. Adequado para lógica simples: para funções com lógica simples, usar funções lambda é mais intuitivo do que funções definidas por definição.

deficiência:

  1. Funcionalidade limitada: como as funções lambda podem ter apenas uma expressão, a lógica complexa não pode ser implementada.
  2. Legibilidade: se a função lambda for abusada ou usada para implementar uma lógica mais complexa, pode reduzir a legibilidade do código.

Função lambda com vários parâmetros

As funções que vimos antes aceitam lambdaapenas um ou dois parâmetros. No entanto, lambdaas funções também podem aceitar qualquer número de argumentos. Por exemplo:

f = lambda x, y, z: x + y + z
print(f(1, 2, 3))  # Output: 6

Esta lambdafunção recebe três parâmetros e retorna sua soma.

Você pode até usar argumentos variáveis ​​(também conhecidos como "varargs"):

f = lambda *args: sum(args)
print(f(1, 2, 3, 4, 5))  # Output: 15

Esta lambdafunção recebe qualquer número de argumentos e retorna sua soma.

funções lambda e programação funcional

Na programação funcional, as funções são consideradas cidadãs de primeira classe e podem ser atribuídas a variáveis, passadas como parâmetros para outras funções e retornadas como valores de outras funções. Esse paradigma de programação incentiva o uso de funções puras sem efeitos colaterais, bem como funções de ordem superior como map(), e .filter()reduce()

lambdaAs funções são uma personificação da programação funcional em Python. Ao combinar lambdafunções e funções de ordem superior, podemos escrever um código muito conciso e elegante.

Por exemplo, o código a seguir usa a função map()e lambdapara converter todos os elementos de uma lista em strings:

numbers = [1, 2, 3, 4, 5]
strings = map(lambda x: str(x), numbers)
print(list(strings))  # Output: ['1', '2', '3', '4', '5']

Em geral, lambdaas funções são um recurso muito poderoso em Python, que nos permite escrever código de forma mais rápida e concisa. No entanto, observe também que, se lambdaa lógica da função for muito complexa, pode reduzir a legibilidade do código. Portanto, lambdaas funções são mais bem usadas para implementar lógica simples.

Argumentos padrão e argumentos de palavra-chave

Como as funções normais, as funções lambda podem ter argumentos padrão e argumentos de palavra-chave:

f = lambda x, y=2, *, z=3: x + y + z
print(f(1))  # Output: 6
print(f(1, 4, z=5))  # Output: 10

Neste exemplo, lambdaa função tem dois parâmetros posicionais xe y, ycom um valor padrão de 2. zé um argumento de palavra-chave com um valor padrão de 3.

funções lambda e decoradores

Embora em Python os decoradores sejam geralmente defdefinidos usando uma sintaxe, lambdaas funções também podem ser usadas para criar decoradores simples.

Por exemplo, o código a seguir define um decorador que multiplica o resultado de uma função por 2:

double_result = lambda f: lambda *args, **kwargs: 2 * f(*args, **kwargs)

@double_result
def add(x, y):
    return x + y

print(add(1, 2))  # Output: 6

Nesse caso, double_resultum decorador que pega uma função fe retorna uma nova função que retorna fo dobro do resultado.

epílogo

Este artigo fornece uma introdução detalhada às funções em Python lambda, incluindo sua sintaxe, finalidade e alguns casos de uso comuns. lambdaAs funções são uma ferramenta poderosa em Python que pode tornar seu código mais conciso e elegante. Embora lambdauma função tenha algumas restrições, como conter apenas uma única expressão, em muitos casos isso é suficiente.

Espero que este artigo possa ajudá-lo a entender e dominar funções em Python lambdae tornar sua jornada de programação em Python mais tranquila. Lembre-se, a melhor maneira de aprender é fazendo, então tente escrever algumas lambdafunções agora e veja o que você pode fazer.

Acho que você gosta

Origin blog.csdn.net/qq_42076902/article/details/131256868
Recomendado
Clasificación