Python Tema5 Parte5 Funciones-Variables BR v2
Python Tema5 Parte5 Funciones-Variables BR v2
Noções básicas e
sintaxe de Python
Funções e variáveis
1
IBM SkillsBuild | Introducción a Python
Índice
Introdução 3
Vantagens da utilização das funções 4
Aumenta a reusabilidade do código e minimiza a redundância (repetição) 4
Habilitar a decomposição de procedimentos 4
Sintaxe da função básica em Python 4
Funções e polimorfismo 5
Funções aninhadas 6
Recurssão 6
Retorno de múltiplos valores simultaneamente 6
Experimente 6
Escopo de uma função 7
Escopos e suas propriedades 7
Resolução do nome. A regra LEGB 8
Parâmetros e argumentos 11
Argumentos sobre as funções 11
Uma visão geral das diferentes formas de passagem de argumentos 12
Considerações de projeto ao programar com funções 16
Acoplamento 16
Coesão 17
Experimente 17
Definindo Variáveis 18
Atribuição de um valor a uma variável em Python 18
2
IBM SkillsBuild | Introducción a Python
Introdução
3
IBM SkillsBuild | Introducción a Python
Habilitar a decomposição de
Depois disso, e em uma nova linha, escreveremos o
procedimentos corpo de nossa função, que consistirá em um grupo
de frases a serem executadas, terminando com a
Ou seja, eles permitem que os programas sejam
declaraçao opcional return acompanhado do valor a
divididos em pequenas partes onde cada parte tem
ser devolvido.
um papel bem definido. Geralmente é mais fácil
programar pequenos pedaços de código e compô-los
Para chamar a função simplesmente digitamos o
em programas maiores do que escrever todo o
nome da função seguido dos argumentos que
processo de uma só vez.
queremos passar a ela, encapsulados entre
Nesta unidade, aprenderemos a sintaxe necessária parênteses. Vamos ver alguns exemplos:
para operar com funções, aprenderemos o conceito
def suma(a, b): # Definimos la función
de área (scope) e veremos como parametrizar nossas "suma". Tiene 2 parámetros.
funções para torná-las mais genéricas. Com tudo return a+b # "return" devuelve
isso, estaremos prontos para iniciar um caminho el resultado de la función.
muito mais ambicioso no mundo da programação
suma(2, 3) # Llamada a la función.
Python, que continuaremos nas próximas unidades e Hay que pasarle dos parámetros.
cursos desta especialização.
# Resultado: 5
Como você pode ver, não é necessário usar return. suma('Me gusta', 'Python') # Función con
Em funções que não têm return, retornan None. strings
5
IBM SkillsBuild | Introducción a Python
def f1(a): # Función que "encierra" As funções podem retornar qualquer objeto com a
a f2 (enclosing)
declaração return. Assim, se combinarmos o retorno
print(a)
b = 100 de uma tupla, com o desempacotamento prolongado
def f2(x): # Función anidada que Python permite, podemos simular o retorno de
print(x) # Llamamos a f2 desde múltiplos valores:
f1
f2(b)
def maxmin(lista):
f1('Python') # Llamamos a f1 return max(lista), min(lista) #
Devielveuna tupla de 2 elementos
Resultado: l = [1, 3, 5, 6, 0]
maximo, minimo = maxmin(l) #
Desempaqueta la tupla en 2 variables
Resultado:
Como podemos ver, é possível criar funções dentro
de outras funções.
Recurssão
factorial(5)
Nesta função, vemos que a condição de saída de
recorrência é satisfeita quando x é igual a 1.
6
IBM SkillsBuild | Introducción a Python
O escopo de uma variável depende de onde ela é Como podemos ver, as funções permitem que você
atribuída. Em outras palavras, dependendo do local crie namespaces âmbitos aninhados que limitam os
onde atribuímos uma variável, estaremos definindo o âmbitos de acesso e evitam colisões de nomes
escopo em que ela pode ser utilizada. As variáveis variáveis. Assim, em funções criamos escopos locais
podem ser atribuídas em três âmbitos: que contrastam com o escopo global dos módulos.
Estes escopos têm as seguintes propriedades:
• Se uma variável é atribuída dentro de uma
função, ela é local para essa função.
• As variáveis que são criadas no escopo do
• Se uma variável é atribuída dentro de uma
módulo são variáveis globais para aquele
função, ela é não-local para todos os escopos de
arquivo. Quando importamos um módulo de
função aninhados dentro dela.
outro módulo, estas variáveis se tornam atributos
• Se uma variável é atribuída fora de qualquer
do módulo importado, de modo que podem ser
função, ela é global ao arquivo no qual ela é
acessadas como variáveis simples do módulo.
criada.
Por exemplo, a variável math.pi é global para o
módulo math, mas se importarmos o módulo
math, podemos acessá-lo como se fosse um
atributo do mesmo (por isso, acessamo-lo por
meio de math.pi).
7
IBM SkillsBuild | Introducción a Python
8
IBM SkillsBuild | Introducción a Python
Escopos de busca da LEGB. Quando uma variável é referenciada, Python realiza uma busca começando no
nível local e trabalhando até builtins. A busca termina no primeiro campo onde o nome referenciado é
encontrado.
9
IBM SkillsBuild | Introducción a Python
f1()
10
IBM SkillsBuild | Introducción a Python
11
IBM SkillsBuild | Introducción a Python
def minimo(l):
l[0] = 1000 # Modificamos la
lista en el interior
return min(l)
Por keywords (palavras-chave)
l = [1, 2, 3]
Ao invés de chamar a função com seus argumentos
print(minimo(l[:])) # minimo modifica la
lista aquí em ordem, a função é passada especificando o nome
print(l) do argumento seguido do valor a ser passado. O
Resultado: nome da sintaxe=valor é usado. Como você está
especificando o nome dos argumentos
explicitamente, não é necessário ordená-los por
posição.
12
IBM SkillsBuild | Introducción a Python
f(a=1)
f(a=1, b=2)
def f(*args): # Acepta número Ao chamar uma função você pode usar a sintaxe de *
arbitrario de argumentos para desembalar uma coleção em uma série de
print(args) argumentos separados por posição.
f() # Si no hay
argumentos, args es una tupla vacía
f(1)
f(1, 2)
f(1, 2, 3, 4, 5, 6)
13
IBM SkillsBuild | Introducción a Python
Resultado: Resultado:
Resultado:
Resultado:
14
IBM SkillsBuild | Introducción a Python
zlist
a, b, c = zip(*zlist) # El * en
zip desempaqueta lista de tuplas
print(la, lb) #
Seperador por defecto es espacio
Resultado:
15
IBM SkillsBuild | Introducción a Python
16
IBM SkillsBuild | Introducción a Python
Coesão Experimente
• Cada função deve ter um único propósito. O
código bem projetado é composto de funções
Crie uma função de registro que aceite qualquer
que fazem apenas uma coisa. Normalmente o
número de argumentos e os imprima na tela em uma
objetivo de uma função deve ser resumido em
única linha. A linha deve começar com o prefixo
uma frase curta. Se a frase que descreve sua
‘LOG:’.
função for muito genérica (p. ex. “esta função
resolve meu problema”) ou se tiver muitas Modifica a função log para permitir que o usuário
conjunções (p. ex. “esta função calcula X e especifique qualquer prefixo desejado.
processa Y”), considerar dividi-lo em partes mais
simples. Modificar a função log para que o prefixo tenha um
• Todas as funções devem ser relativamente valor padrão ‘LOG: ’.
pequenas. Este ponto está relacionado com o
Modificar a função log para permitir ao usuário definir
anterior. Tenha em mente que o código escrito
tanto o prefixo quanto o separador entre os
em Python é muito conciso. Se sua função tem
argumentos. Ambos devem ser passados somente
mais de uma dúzia ou duas linhas ou contém
pelos nomes (não pela posição) 'sep' e 'prefix'. Estes
vários níveis de aninhamento, é provável que
não precisam ter um valor padrão.
você tenha um problema de projeto..
Modifica a função log para que agora 'sep' e 'prefix'
Em resumo, tente fazer com que seu código consista
tenham um valor padrão.
em muitas pequenas funções que são independentes
umas das outras. Modifique a função log para aceitar o seguinte
dicionário. Lembre-se de passá-lo desembalado com
a sintaxe de asterisco duplo (**).
17
IBM SkillsBuild | Introducción a Python
Definindo Variáveis
Suponha que queremos exibir o resultado da adição
de 1 + 2. Para exibir o resultado, devemos dizer ao
programa onde esses dados estão na memória e,
para isso, fazemos uso de uma variável:
As variáveis são um dos dois componentes básicos
de qualquer programa.
Uma variável é um conceito fundamental em Três partes estão envolvidas na operação de cessão:
qualquer linguagem de programação. É um local
reservado de memória que armazena e manipula os • O operador de cessão =
dados. Em algumas linguagens de programação, as • Um identificador ou nome variável, à
variáveis podem ser pensadas como "caixas" nas esquerda do operador.
quais os dados são armazenados, mas em Python, as • Uma literal, uma expressão, uma chamada
variáveis são "etiquetas" que permitem que você se de função, ou uma combinação de todas elas
à direita do operador de atribuição.
refira aos dados (que são armazenados em "caixas"
chamadas objetos). Ejemplos:
print(a)
19