Funções em Python
Este artigo explica as funções no Python.
YouTube Video
Funções em Python
As funções em Python são um recurso essencial para definir blocos reutilizáveis de código, permitindo que você organize e simplifique seu programa chamando-as conforme necessário. O uso de funções pode melhorar a legibilidade do código e aderir ao princípio DRY (Don’t Repeat Yourself, evite escrever o mesmo código várias vezes).
Definindo Funções
As funções são definidas usando a palavra-chave def. A sintaxe básica é a seguinte:.
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_valuePor exemplo, para definir uma função que soma dois números, você escreveria:.
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + yChamando Funções
Uma função definida pode ser chamada e usada da seguinte forma:.
1result = add(3, 4)
2print(result) # Output: 7Componentes de uma Função
-
Nome da Função
- O nome da função, usado ao chamá-la.
-
Argumentos (Parâmetros)
- Os nomes das variáveis que recebem os dados passados no momento da chamada. Você pode definir zero ou mais argumentos.
-
String de Documentação (Docstring)
- Uma string que descreve o propósito e o uso da função. Opcional.
-
Corpo da Função
- Um bloco indentado onde são escritas as instruções executadas pela função.
-
Valor de Retorno
- O valor retornado ao chamador usando a instrução
return. Sereturnfor omitido,Noneserá retornado por padrão.
- O valor retornado ao chamador usando a instrução
Tipos de Argumentos
Em Python, existem vários tipos de argumentos.
- Argumentos Posicionais
- A forma usual de passar argumentos para uma função.
- Argumentos Padrão
- Atribui valores padrão aos argumentos para que possam ser omitidos ao chamar a função.
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"- Argumentos de Comprimento Variável
argsrecebe múltiplos argumentos posicionais como uma tupla, ekwargsos recebe como um dicionário.
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}Ao usar funções corretamente, você pode escrever programas em Python de forma mais eficaz e eficiente.
Funções Lambda em Python
Em Python, funções lambda são usadas para definir funções anônimas e concisas. Ao contrário das funções definidas com a palavra-chave def, lambda permite criar funções curtas de uma única linha. Aqui, explicaremos as funções lambda em Python em detalhes.
Noções Básicas sobre Funções lambda
Funções lambda, também chamadas de funções anônimas, são usadas para definir funções temporárias que não possuem nome, como o próprio nome sugere. A sintaxe básica é a seguinte:.
1lambda arguments: expressionargumentos- Especifica os argumentos de uma função. Vários argumentos podem ser especificados, separados por vírgulas.
expressão- Uma expressão avaliada com base nos argumentos. O resultado da expressão se torna o valor de retorno da função.
Por exemplo, o código a seguir define e executa uma função lambda que soma dois números.
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8Neste exemplo, lambda x, y: x + y é uma função lambda que recebe dois argumentos, x e y, e retorna a soma deles.
Casos de Uso de Funções lambda
Funções lambda são úteis em situações onde você precisa definir uma função simples no momento. Elas são particularmente comuns nos seguintes casos:.
-
Quando Passadas como Argumentos para Funções
- É útil em funções de ordem superior (funções que recebem outras funções como argumentos) ao passar funções curtas e temporárias.
-
Ao Especificar Chaves para Ordenar Listas
- Elas são úteis para especificar critérios de ordenação (chaves) em funções como
sort()ousorted().
- Elas são úteis para especificar critérios de ordenação (chaves) em funções como
Exemplo de Uso em Funções de Ordem Superior
Exemplos típicos de funções de ordem superior incluem map(), filter() e reduce(). Essas funções recebem outras funções como argumentos e as aplicam a sequências, como listas.
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]Neste exemplo, uma função lambda é passada para a função map() para elevar ao quadrado cada número em uma lista.
Exemplos de uso de ordenação de listas
A função lambda pode, às vezes, ser usada para especificar uma chave personalizada ao ordenar uma lista. Por exemplo, o código a seguir ordena uma lista de tuplas com base no segundo elemento.
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]Neste exemplo, uma função lambda é usada para ordenar as tuplas com base no seu segundo elemento (uma string).
filter() e lambda
A função filter() é usada para filtrar elementos em uma lista (ou outro iterável) com base em uma condição dada.
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]Neste exemplo, os números pares de uma lista são filtrados para criar uma nova lista.
lambda e reduce()
A função reduce() é usada para reduzir uma lista a um único valor. Ela pode ser implementada facilmente usando uma função lambda.
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120Neste exemplo, todos os elementos da lista são multiplicados para produzir um resultado.
Evite usar funções lambda complexas
A vantagem das funções lambda é sua brevidade, mas elas ficam mais difíceis de ler quando usadas para implementar lógica complexa. Portanto, é adequado usá-las para operações simples que possam ser expressas em uma única linha. Para operações complexas, definir uma função com def é mais legível e fácil de manter.
Por exemplo, você deve evitar usar funções lambda complexas como a mostrada abaixo.
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)Neste caso, é melhor usar uma função definida com def, como mostrado abaixo.
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2Conclusão
As funções lambda do Python são uma ferramenta conveniente para definir funções temporárias e curtas. Elas são frequentemente usadas em funções de ordem superior ou operações de listas para definir condições específicas de forma concisa. No entanto, as funções lambda devem ser limitadas a tarefas simples, preferindo funções definidas com def para lógicas complexas.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.