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

2.4 KiB
Raw Blame History

title localeTitle
Python Calling Functions 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]