Como definir uma função em Python?

Conteúdo

Uma função é um bloco de código reutilizável que pode executar uma tarefa básica. A definição de função em Python pode ser um pouco diferente da sintaxe usada em linguagens como C, C ++ o Java. O objetivo deste post é fornecer a sintaxe para definir funções em Python.

A definição da função começa com um def palavra-chave seguido pelo nome da função e os argumentos que a função pode tomar. esses argumentos estão entre parênteses e pode haver qualquer número de argumentos, incluindo zero. Quando há mais de um argumento, são separados por uma círgula. Uma vez que Python é uma linguagem tipo imprecisa (lo que significa que no asignamos un tipo de datos a una variável cuando se declara), não devemos incluir tipos de dados para argumentos. Declaração de definição de função termina com cólon. E Python, definimos uma função na próxima maneira:

def function_name(arg1,arg2,arg3,...):
    """
    lógica função vai aqui.
    """
    valor de retorno1, valor2, valor3,...

Abaixo está uma função simples,

def cumprimentar():
    imprimir("Olá, mundo")

Esta é uma função básica que imprime “Olá, mundo"Para o console.

Sangrando

Se olharmos atentamente para a definição da função, vemos que não há chaves ao redor do corpo de função. E Python, o corpo da função é identificado pelo nível de recuo. Já que não usamos aparelhos para indicar o corpo da função, o recuo é útil para o intérprete Python saber qual parte do código define a lógica da função. Se não tivermos um recuo da lógica da função em relação à declaração da função, uma RecuoError será gerado e a função não será interpretada.

def diversão(nome):
imprimir("Olá" + nome)

A função acima não irá compilar e vai lançar um RecuoError.

Valores de retorno

Uma função pode retornar um valor, nesse caso, é insinuado ao intérprete por meio do Retornar demonstração. Ao contrário de C, C ++ o Java, uma função python pode retornar vários valores. Se não incluirmos uma declaração de retorno, o controle será automaticamente transferido para o código de chamada sem devolver qualquer valor. Um valor padrão de Nenhum será devolvido se não houver declaração de retorno. Da mesma forma que com outras línguas, uma função pode ter no máximo uma declaração de retorno.

def adicionar(uma, b):
    Retornar para + b
def hello():
    imprimir("Olá, mundo")
res = adicionar(5,7) #res será ter um valor de 12.
res = Olá() #res será ter um valor de Nenhum.

Argumentos padrão

podemos determinar valores padrão para os argumentos na definição de função. Para isso, usamos a seguinte sintaxe. note que os argumentos padrão devem estar do lado certo da lista de argumentos. Em outras palavras, um argumento padrão só deve vir depois de todos os argumentos não-padrão.

área defDeCircle(raio, pi=3,14):
    retorno pi * raio * raio

Aqui a função leva um argumento pi padrão que é definido no lado direito da lista de argumentos. Se definirmos o argumento padrão à esquerda de um argumento não padrão, temos um Erro de sintaxe.

Funçãos de chamada

Agora que temos funções definidas, vemos o que podemos chamá-los em nosso código. Para chamar uma função usamos o nome da função junto com os argumentos que foram usados para definir a função. O número de argumentos deve corresponder exatamente ao número de argumentos presentes na definição da função. Qualquer diferença no número de argumentos vai levantar o Erro de digitação.

área defDeCircle(raio, pi=3,14):
    retorno pi * raio * radius
#function call
print(áreaSOcircle(5))
#note que o argumento padrão não é passado um valor.
#Impressões 78.5 na tela.

Sobrecarga de recursos

Programadores com experiência em C ++ ou Java teria sobrecarregado funções muitas vezes. A sobrecarga de funções não funciona em Python porque se definirmos uma função duas ou mais vezes variando o número de argumentos, o último conjunto de funções substituirá as definições anteriores. Se a função com o número especificado de argumentos na chamada de função não existir, temos um Erro de digitação. Como um exemplo,

def adicionar(uma, b):
    Retornar para + b
def add(uma, b, c):
    Retornar para + b + c
print(adicionar(1,2)) #lança um TypeError pedindo mais um argumento.
imprimir(adicionar(1,2,3)) #Impressões 6 no console.

Passando funções como argumentos

Podemos passar uma função em si mesma como um argumento para uma função diferente. Suponha que queremos aplicar uma função específica a uma matriz de números. Em vez de definir uma função e chamá-la usando um loop para, poderíamos simplesmente usar a função mapa. A função do mapa é uma poderosa função incorporada que toma uma função e uma coleção de itens como argumentos e aplica a função de entrada a toda a coleção de itens e devolve os itens processados.

def quadrado(eu):
    retorno i * i 
res = list(mapa(quadrado, [1,2,3])) 
#res agora contém [1,4,9]. Conseguimos os resultados sem sequer looping através da lista

* argumentos e ** kwargs

Falando em argumentos, existem alguns tipos especiais de argumentos. é viável que programadores experientes têm usado este argumento em c e c ++. Python também oferece esses recursos. Se não soubermos quantos argumentos uma função receberá durante o tempo de execução, podemos usar * args para receber esses argumentos na definição de função. Além disso, podemos alcançar uma sobrecarga de funções usando * args mesmo que não seja tecnicamente uma sobrecarga de funções, uma vez que não estamos definindo múltiplas funções com o mesmo nome de função.

def adicionar(*args):
    soma = 0
    para arg em args:
        sum += arg
    return sum
add(1,2,3) #Retorna 6
adicionar(1,2,3,4) #Retorna 10

Se quisermos receber argumentos nomeados, podemos usar ** kwargs.

def diversão(**kwargs):
    para a chave em kwargs:
        imprimir(chave, kwargs[chave])
Divertimento(a=1,b=2,c=3)
#prints 
#a 1
#b 2
#c 3

Argumentos de linha de comando

qualquer código de nível de produção usaria um tipo especial de argumento. estes são argumentos de linha de comando usados pela função principal. E Python, esses argumentos serão passados para a função __main__. Podemos facilmente obtê-los analisando a variável sys.argv. Porque analisar uma sequência de linha de comando é uma tarefa comum, temos bibliotecas para fazer isso para nós, como argumentar.

Como definir funções 'anônimas'’

funções anônimas são funções sem nome. Eles também são conhecidos como lambda funções. Mas espere!! Se uma função não for nomeada, o que você vai chamá-lo? Estes são chamados onde eles são definidos. Eles não são usados mais tarde no código na maioria das vezes. essas funções são funções especiais que são usadas quando precisamos passar uma função em si como argumento.. Este caso ocorre mais frequentemente quando queremos fazer algum tipo de processamento de dados com pandas ou qualquer outra biblioteca. A função pode ser tão pequena que não merece um nome próprio. Essas funções são definidas com a palavra-chave lambda.

Lista(mapa(lambda x: poderíamos fazer um programa que imprimisse os quadrados dos números em uma lista excessivamente dada, [1,2,3]))
#imprime valores [1,4,9]

Calculamos os quadrados da lista de entrada sem sequer definir uma função. O que estamos fazendo com a declaração lambda x: x * x é que estamos definindo uma função anônima, Em outras palavras, anónimo, e estamos chamando-a imediatamente. suponhamos que queremos usar a função lambda em um ponto posterior, podemos armazená-lo em uma variável função e usá-lo.

quadrado = lambda x: x*x
list(mapa(quadrado, [1,2,3]))
#imprime valores [1,4,9]

O quadrado variável armazena a função em números quadrados e vamos usá-la em um momento posterior quando queremos calcular os quadrados dos números em uma lista. Ao estabelecer funções lambda devemos prestar atenção aos seguintes pontos:

  1. Nenhuma declaração de retorno.
  2. Argumentos não são escritos entre parênteses.
  3. Sem recuo.
  4. Vários argumentos são separados por uma círgula
  5. essas funções são definidas em uma única linha.

conclusão

Este post conciso mencionou as etapas para estabelecer uma função e explicou os componentes de uma função. A definição da função em Python pode parecer muito diferente em comparação com C, C ++ ou Java sem chaves, tipos de retorno, etc. Mas uma vez que entendemos a estrutura da função, torna-se mais fácil escrever funções mais complicadas.

Sobre o autor

Sou um desenvolvedor Python trabalhando em uma multinacional de TI há mais de três anos. Posso ser contatado através do Gmail.

A mídia mostrada nesta postagem não é propriedade da Analytics Vidhya e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.