Argumentos da função Python
Argumentos da função Python
Em Python, você pode definir uma função que recebe um número variável de argumentos. Neste artigo, você aprenderá a definir tais funções usando argumentos padrão, palavras-chave e arbitrários.
Vídeo:Argumentos da função Python:posicionais, palavras-chave e padrão
Argumentos
No tópico de função definida pelo usuário, aprendemos sobre como definir uma função e chamá-la. Caso contrário, a chamada da função resultará em um erro. Aqui está um exemplo.
def greet(name, msg):
"""This function greets to
the person with the provided message"""
print("Hello", name + ', ' + msg)
greet("Monica", "Good morning!")
Saída
Hello Monica, Good morning!
Aqui, a função
greet()
tem dois parâmetros. Como chamamos essa função com dois argumentos, ela funciona sem problemas e não recebemos nenhum erro.
Se o chamarmos com um número diferente de argumentos, o interpretador mostrará uma mensagem de erro. Abaixo está uma chamada para esta função com um e nenhum argumento junto com suas respectivas mensagens de erro.
>>> greet("Monica") # only one argument TypeError: greet() missing 1 required positional argument: 'msg'
>>> greet() # no arguments TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'
Argumentos de função variável
Até agora, as funções tinham um número fixo de argumentos. Em Python, existem outras maneiras de definir uma função que pode receber um número variável de argumentos.
Três formas diferentes deste tipo são descritas abaixo.
Argumentos padrão do Python
Os argumentos de função podem ter valores padrão em Python.
Podemos fornecer um valor padrão para um argumento usando o operador de atribuição (=). Aqui está um exemplo.
def greet(name, msg="Good morning!"):
"""
This function greets to
the person with the
provided message.
If the message is not provided,
it defaults to "Good
morning!"
"""
print("Hello", name + ', ' + msg)
greet("Kate")
greet("Bruce", "How do you do?")
Saída
Hello Kate, Good morning! Hello Bruce, How do you do?
Nesta função, o parâmetro
name
não tem um valor padrão e é obrigatório (obrigatório) durante uma chamada. Por outro lado, o parâmetro
msg
tem um valor padrão de "Good morning!"
. Portanto, é opcional durante uma chamada. Se um valor for fornecido, ele substituirá o valor padrão. Qualquer número de argumentos em uma função pode ter um valor padrão. Mas uma vez que temos um argumento padrão, todos os argumentos à sua direita também devem ter valores padrão.
Isso significa dizer que argumentos não padrão não podem seguir argumentos padrão. Por exemplo, se tivéssemos definido o cabeçalho da função acima como:
def greet(msg = "Good morning!", name):
Receberíamos um erro como:
SyntaxError: non-default argument follows default argument
Argumentos de palavra-chave do Python
Quando chamamos uma função com alguns valores, esses valores são atribuídos aos argumentos de acordo com sua posição.
Por exemplo, na função acima
greet()
, quando o chamamos de greet("Bruce", "How do you do?")
, o valor "Bruce"
é atribuído ao argumento nome e da mesma forma "How do you do?"
para msg . Python permite que funções sejam chamadas usando argumentos de palavras-chave. Quando chamamos funções desta forma, a ordem (posição) dos argumentos pode ser alterada. As seguintes chamadas para a função acima são todas válidas e produzem o mesmo resultado.
# 2 keyword arguments
greet(name = "Bruce",msg = "How do you do?")
# 2 keyword arguments (out of order)
greet(msg = "How do you do?",name = "Bruce")
1 positional, 1 keyword argument
greet("Bruce", msg = "How do you do?")
Como podemos ver, podemos misturar argumentos posicionais com argumentos de palavras-chave durante uma chamada de função. Mas devemos ter em mente que os argumentos de palavras-chave devem seguir os argumentos posicionais.
Ter um argumento posicional após argumentos de palavras-chave resultará em erros. Por exemplo, a chamada de função da seguinte forma:
greet(name="Bruce","How do you do?")
Resultará em um erro:
SyntaxError: non-keyword arg after keyword arg
Argumentos arbitrários do Python
Às vezes, não sabemos de antemão o número de argumentos que serão passados para uma função. Python nos permite lidar com esse tipo de situação por meio de chamadas de função com um número arbitrário de argumentos.
Na definição da função, usamos um asterisco (*) antes do nome do parâmetro para denotar esse tipo de argumento. Aqui está um exemplo.
def greet(*names):
"""This function greets all
the person in the names tuple."""
# names is a tuple with arguments
for name in names:
print("Hello", name)
greet("Monica", "Luke", "Steve", "John")
Saída
Hello Monica Hello Luke Hello Steve Hello John
Aqui, chamamos a função com vários argumentos. Esses argumentos são agrupados em uma tupla antes de serem passados para a função. Dentro da função, usamos um
for
loop para recuperar todos os argumentos de volta. python