freeCodeCamp/guide/portuguese/python/functions/index.md

139 lines
4.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

---
title: Functions
localeTitle: Funções
---
## Funções
Uma função permite que você defina um bloco de código reutilizável que pode ser executado muitas vezes em seu programa.
As funções permitem criar soluções mais modulares e [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) para problemas complexos.
Embora o Python já forneça muitas funções internas, como `print()` e `len()` , você também pode definir suas próprias funções para usar em seus projetos.
Uma das grandes vantagens de usar funções em seu código é que ele reduz o número geral de linhas de código em seu projeto.
### Sintaxe
No Python, uma definição de função possui os seguintes recursos:
1. A palavra-chave `def`
2. um nome de função
3. parantesia '()' e dentro dos parâmetros de entrada da parantesia, embora os parâmetros de entrada sejam opcionais.
4. um cólon ':'
5. algum bloco de código para executar
6. uma declaração de retorno (opcional)
```python
# a function with no parameters or returned values
def sayHello():
print("Hello!")
sayHello() # calls the function, 'Hello!' is printed to the console
# a function with a parameter
def helloWithName(name):
print("Hello " + name + "!")
helloWithName("Ada") # calls the function, 'Hello Ada!' is printed to the console
# a function with multiple parameters with a return statement
def multiply(val1, val2):
return val1 * val2
multiply(3, 5) # prints 15 to the console
```
Funções são blocos de código que podem ser reutilizados simplesmente chamando a função. Isso permite a reutilização de código simples e elegante sem reescrever explicitamente seções de código. Isso torna o código mais legível, facilita a depuração e limita os erros de digitação.
Funções em Python são criadas usando a palavra-chave `def` , seguida por um nome de função e parâmetros de função dentro de parênteses.
Uma função sempre retorna um valor. A palavra-chave `return` é usada pela função para retornar um valor, se você não quiser retornar nenhum valor, o valor padrão `None` será retornado.
O nome da função é usado para chamar a função, passando os parâmetros necessários dentro de parênteses.
```python
# this is a basic sum function
def sum(a, b):
return a + b
result = sum(1, 2)
# result = 3
```
Você pode definir valores padrão para os parâmetros, assim o Python irá interpretar que o valor desse parâmetro é o padrão se nenhum for dado.
```python
def sum(a, b=3):
return a + b
result = sum(1)
# result = 4
```
Você pode passar os parâmetros na ordem desejada, usando o nome do parâmetro.
```python
result = sum(b=2, a=2)
# result = 4
```
No entanto, não é possível passar um argumento de palavra-chave antes de um argumento de não-palavra-chave
```Python
result = sum(3, b=2)
#result = 5
result2 = sum(b=2, 3)
#Will raise SyntaxError
```
As funções também são Objetos, então você pode atribuí-las a uma variável e usar essa variável como uma função.
```python
s = sum
result = s(1, 2)
# result = 3
```
### Notas
* Se uma definição de função incluir parâmetros, você deverá fornecer o mesmo número de parâmetros quando chamar a função.
```python
print(multiply(3)) # TypeError: multiply() takes exactly 2 arguments (0 given)
print(multiply('a', 5)) # 'aaaaa' printed to the console
print(multiply('a', 'b')) # TypeError: Python can't multiply two strings
```
* O bloco de código que a função executará inclui todas as instruções recuadas dentro da função.
```python
def myFunc():
print('this will print')
print('so will this')
x = 7
# the assignment of x is not a part of the function since it is not indented
```
* Variáveis definidas dentro de uma função só existem dentro do escopo dessa função.
```python
def double(num):
x = num * 2
return x
print(x) # error - x is not defined
print(double(4)) # prints 8
```
\-Python interpreta o bloco de função somente quando a função é chamada e não quando a função é definida. Assim, mesmo que o bloco de definição de função contenha algum tipo de erro, o interpretar de python mostrará isso apenas quando a função for chamada.
### Mais Informações:
* [Python 3 Docs: definindo funções](https://docs.python.org/3/tutorial/controlflow.html#defining-functions)