Noções básicas de funções Python

Concluído

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 Noneimplicitamente . 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'