Noções básicas de funções Python
As funções são o próximo passo depois de aprender as noções básicas de programação do Python. Em sua forma mais simples, uma função contém código que sempre retorna um valor (ou valores). Em alguns casos, uma função também tem entradas opcionais ou necessárias.
Quando você começa a escrever código que duplica outras partes do programa, torna-se uma oportunidade perfeita para extrair o código em uma função. Embora o compartilhamento de código comum por meio de funções seja útil, você também pode limitar o tamanho do código extraindo partes em funções menores (mais legíveis).
Programas que evitam duplicação e impedem funções grandes usando funções menores são mais legíveis e fáceis de manter. Eles também são mais fáceis de depurar quando as coisas não estão funcionando corretamente.
Várias regras sobre entradas de função são fundamentais para que você aproveite ao máximo tudo o que as funções têm a oferecer.
Importante
Embora estejamos usando o termo input para descrever quais funções recebem, esses elementos geralmente são chamados de argumentos ou parâmetros. Para consistência neste módulo, vamos nos referir às entradas como argumentos.
Funções sem argumentos
Para criar uma função, use a def
palavra-chave seguida por um nome, parênteses e, em seguida, o corpo com o código da função:
def rocket_parts():
print("payload, propellant, structure")
Neste caso, rocket_parts
é o nome da função. Esse nome é seguido pelos parênteses vazios, que indicam que não são necessários argumentos. Por último está o código, recuado com quatro espaços. Para usar a função, você deve chamá-la pelo nome usando parênteses:
rocket_parts()
payload, propellant, structure
A rocket_parts()
função não aceita argumentos e imprime uma instrução. Se você precisar usar um valor que uma função está retornando, você pode atribuir a saída da função a uma variável:
output = rocket_parts()
payload, propellant, structure
output is None
True
Pode parecer surpreendente que o valor para a output
variável seja None
. Isso ocorre porque a rocket_parts()
função não retornou explicitamente um valor. Em Python, se uma função não retorna explicitamente um valor, ela retorna None
implicitamente . Atualizar a função para retornar a cadeia de caracteres em vez de imprimi-la faz com que a output
variável tenha um valor diferente:
def rocket_parts():
return "payload, propellant, structure"
output = rocket_parts()
output
payload, propellant, structure
Se você precisar usar o valor de uma função, essa função deve retornar explicitamente. Caso contrário, None
é devolvido.
Nota
Você não precisa sempre atribuir o retorno de uma função. Na maioria dos casos em que uma função não retorna um valor (ou valores) explicitamente, isso significa que você não precisa atribuir ou usar o implícito None
que é retornado.
Argumentos obrigatórios e opcionais
Em Python, várias funções incorporadas requerem argumentos. Algumas funções incorporadas tornam os argumentos opcionais. As funções incorporadas estão imediatamente disponíveis, pelo que não precisa de as importar explicitamente.
Um exemplo de uma função interna que requer um argumento é any()
. Esta função usa um iterável (por exemplo, uma lista) e retorna True
se qualquer item no iterável for True
. Caso contrário, ele retorna False
.
any([True, False, False])
True
any([False, False, False])
False
Se você ligar any()
sem argumentos, uma exceção útil será gerada. A mensagem de erro explica que você precisa de pelo menos um argumento:
any()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: any() takes exactly one argument (0 given)
Você pode verificar se algumas funções permitem o uso de argumentos opcionais usando outra função interna chamada str()
. Esta função cria uma cadeia de caracteres a partir de um argumento. Se nenhum argumento for passado, ele retornará uma cadeia de caracteres vazia:
str()
''
str(15)
'15'