English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico do Python

Controle de Fluxo do Python

Funções no Python

Tipos de Dados do Python

Operações de Arquivo do Python

Objetos e Classes do Python

Data e Hora do Python

Conhecimento Avançado do Python

Manual de Referência do Python

Parâmetros de Função no Python

Parâmetro

EmFunção definida pelo usuárioNeste artigo, aprendemos sobre a definição de funções e a chamada de funções. Se não estiver claro como chamar uma função, isso pode levar a erros imprevisíveis. Abaixo está um exemplo.

def greet(name, msg):
    """Essa é uma função de saudação
    Os parâmetros name, msg
    print("Olá", name + ', '' + msg)
greet("Monica", "Bom dia!")

Saída de resultados

Olá Monica, Bom dia!

A função greet() tem dois parâmetros.

Como já chamamos a função com dois parâmetros, ela roda normalmente e não há erros.

Se o interpretador for chamado com diferentes números de parâmetros, ele exibirá uma mensagem de erro. Abaixo está a chamada deste função, que demonstra a chamada com um único parâmetro e a chamada sem parâmetros, mostrando as mensagens de erro lançadas após a execução.

>>> greet("Monica") # Fornecido apenas um parâmetro
TypeError: greet() faltando 1 argumento posicionais obrigatórios faltando: 'msg'
>>> greet() # Não foram fornecidos quaisquer parâmetros
TypeError: greet() faltando 2 argumentos posicionais obrigatórios: 'name' e 'msg'

Parâmetros de função variáveis

Até agora, a função tem um número fixo de parâmetros. No Python, há outras maneiras de definir funções que podem aceitar um número variável de parâmetros.

Vamos apresentar três formas diferentes deste tipo.

Parâmetros padrão do Python

Em Python, os parâmetros de função podem ter valores padrão.

Podemos usar o operador de atribuição (=) para fornecer valores padrão para os parâmetros. Este é um exemplo.

def greet(name, msg = "bom dia!"):
    """
    Esta função cumprimenta a pessoa que fornece a mensagem.
    se não for fornecida uma mensagem,
    então o valor padrão é "bom dia!"
    """
    print("Olá", name + ', '' + msg)
greet("Zhang San")
greet("Lisi", "Como vai?")

Saída de resultados

Olá, Zhang San, bom dia!
Olá, Lisi, como vai?

Neste função, o parâmetro name não tem valor padrão, então o parâmetro name deve ser fornecido ao chamar esta função (obrigatório).

Por outro lado, o valor padrão do parâmetro msg é "Good morning!". Portanto, ao chamar a função, não é necessário fornecer um valor. Se um valor for fornecido ao chamar a função, ele substituirá o valor padrão.

Qualquer número de parâmetros em uma função pode ter valores padrão. Mas uma vez que há parâmetros padrão, todos os parâmetros à direita também devem ter valores padrão.

Isso significa que os parâmetros não padrão não podem seguir os parâmetros padrão. Por exemplo, se definirmos o cabeçalho da função acima como:

def greet(msg = "Good morning!", name):

Vamos receber a seguinte mensagem de erro:

SyntaxError: non-argumento padrão seguido por argumento padrão

Parâmetros de palavras-chave do Python

Quando chamamos uma função com alguns valores, esses valores são atribuídos aos parâmetros com base em sua posição.

Por exemplo, na função greet() acima, quando chamamos greet("Bruce", "How do you do?") o valor "Bruce" é atribuído ao parâmetronameE "How do you do?" foi atribuído a msg.

O Python permite a chamada de funções com parâmetros nomeados. Quando chamamos a função dessa forma, a ordem (posição) dos parâmetros pode ser alterada. Todas as chamadas subsequentes da função são válidas e produzem o mesmo resultado.

# 2parâmetros
greet(name = "Bruce",msg = "How do you do?")
# 2parâmetros, a ordem dos parâmetros pode ser invertida
greet(msg = "How do you do?",name = "Bruce") 
#1 parâmetros 1 parâmetros
greet("Bruce", msg = "How do you do?")

Como vimos, podemos misturar parâmetros posicionais e nomeados durante a chamada da função. Mas devemos lembrar que os parâmetros nomeados devem seguir os parâmetros posicionais.

Colocar parâmetros posicionais após parâmetros nomeados causará um erro. Por exemplo, a chamada da função é assim:

greet(name="Bruce","How do you do?")

causará um erro:

SyntaxError: non-keyword arg after keyword arg

Parâmetros arbitrários do Python

Às vezes, não sabemos previamente o número de parâmetros que serão passados para a função. O Python nos permite lidar com essa situação através de chamadas de função com número arbitrário de parâmetros.

No define da função, usamos o asterisco(*)representa esses parâmetros. Este é um exemplo.

def greet(*names):
    """Os objetos abordados por essa função são
        Todas as pessoas na lista de tuplas."""
    # O nome é uma tupla com parâmetros
    for name in names:
        print("Olá", name)
greet("Monica", "Luke", "Steve", "John")

Saída de resultados

Olá Monica
Olá Luke
Olá Steve
Olá John

Aqui, chamamos uma função com vários parâmetros. Esses parâmetros são empacotados em uma tupla antes de serem passados para a função. Dentro da função, usamos um loop for para recuperar todos os parâmetros.