# Funções e Escopo

## 📝Ordem do script

Anteriormente , foi visto explicado o que é uma [🔗função](https://hashnode.com/post/clr5egpuz000309leb6bs42j9), definimos ela para depois chama-la e não ao contrário. Mas se escrevemos o código de cima para baixo, porque temos que voltar para cima ao escrever uma função?? por exemplo eu quero criar uma função bem simples, que cumprimente 👋:

```python
import cowsay

# a função foi criada depois
def ola(nomedapessoa):
    cowsay.cow(('Olá, ' + nomedapessoa))


nome = input("Qual é o seu nome?: ") # isso foi o primeiro que foi escrito
ola(nome)   #  zé da manga
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1705788121220/11140f13-b975-45db-9269-9ff33e62d3e6.png align="left")

Uma boa prática é escrever o código principal 🤗 numa função e o restante das funções a continuação, **obs**:para chamar uma função dentro de outra função, não precisa de ordem nenhuma.

Veja o exemplo:

```python
def main():
    nome = input("Qual é o seu nome: ").strip().title()
    ola(nome)  # chamando outra função

def ola(para="mundo"):
    print("Olá, " , para)

main()
```

Veja que a função **"main()"** contém o código principal, e no final só essa função é chamada. Se a função `ola()` não receber nenhum parâmetro, o valor por padrão será, "mundo", e o resultado final seria : `Olá, mundo`

## 🌐➡️Escopo

O termo "escopo" em Python refere-se à região do código onde uma determinada variável é válida e pode ser acessada. Em outras palavras, o escopo define a visibilidade e a disponibilidade de uma variável em diferentes partes do seu programa. Por exemplo existe a variável `local` e a variável `global`, a variável 'global' pode ser acessada desde qualquer parte do script, basta nomeá-la **global**.

exemplo:

🌐GLOBAL

```python
x = 10

def funcao():
    global x
    x = 20  # o novo valor para x

funcao()
print(x)
```

`> 20`

📦LOCAL

```python
def funcao():
    y = 30
    print(y)

print(y) # ❌ resulta  em erro, pois 'y' só existe dentro da função
```

Portanto, o escopo em Python define onde uma variável pode ser usada e modifica a forma como as variáveis interagem entre diferentes partes do código. Entender 🤓 o escopo é importante para evitar bugs e escrever código mais eficiente.
