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

53 lines
2.4 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: Python Calling Functions
localeTitle: Funções de chamada em Python
---
Uma declaração de definição de função não executa a função. Executando (chamando) uma função é feita usando o nome da função seguido de parêntese colocando argumentos requeridos (se houver).
```
>>> def say_hello():
... print('Hello')
...
>>> say_hello()
Hello
```
A execução de uma função introduz uma nova tabela de símbolos usada para as variáveis locais da função. Mais precisamente, todas as atribuições de variáveis em uma função armazenam o valor na tabela de símbolos locais; enquanto que as referências de variáveis primeiro aparecem na tabela de símbolos locais, depois nas tabelas de símbolos locais das funções delimitadoras, depois na tabela de símbolos globais e finalmente na tabela de nomes incorporados. Assim, variáveis globais não podem ser diretamente atribuídas a um valor dentro de uma função (a menos que seja nomeado em uma declaração global), embora possam ser referenciadas.
```
>>> a = 1
>>> b = 10
>>> def fn():
... print(a) # local a is not assigned, no enclosing function, global a referenced.
... b = 20 # local b is assigned in the local symbol table for the function.
... print(b) # local b is referenced.
...
>>> fn()
1
20
>>> b # global b is not changed by the function call.
10
```
Os parâmetros reais (argumentos) para uma chamada de função são introduzidos na tabela de símbolos locais da função chamada quando é chamada; assim, argumentos são passados usando call por valor (onde o valor é sempre uma referência de objeto, não o valor do objeto). Quando uma função chama outra função, uma nova tabela de símbolos locais é criada para essa chamada.
```
>>> def greet(s):
... s = "Hello " + s # s in local symbol table is reassigned.
... print(s)
...
>>> person = "Bob"
>>> greet(person)
Hello Bob
>>> person # person used to call remains bound to original object, 'Bob'.
'Bob'
```
Os argumentos usados para chamar uma função não podem ser reatribuídos pela função, mas os argumentos que fazem referência a objetos mutáveis podem ter seus valores alterados:
```
>>> def fn(arg):
... arg.append(1)
...
>>> a = [1, 2, 3]
>>> fn(a)
>>> a
[1, 2, 3, 1]
```