Guia Completa de Python 2025 (2/3): operadores, controle de fluxo e funções

Guia Completa de Python 2025 (2/3): operadores, controle de fluxo e funções

Na primeira parte vimos os **tipos de dados** de Python. Neste segundo capítulo cobrimos os **operadores**, o **controle de fluxo** (if, for, while) e as **funções**.

Aviso: Este post foi traduzido para o português usando um modelo de tradução automática. Por favor, me avise se encontrar algum erro.

📚 **Esta entrada faz parte da série _Guia completo de Python_**, dividida em três capítulos que são lidos em ordem:

> * Parte 1: Tipos de dados

* 👉 **Parte 2: Operadores, controle de fluxo e funções**

* Parte 3: Classes, objetos e temas avançados

3. Operadoreslink image 57

3.1. Operadores aritméticoslink image 58

Operador de soma +

	
< > Input
Python
3 + 5
Copied
>_ Output
			
8

Operador de subtração -

	
< > Input
Python
3 - 5
Copied
>_ Output
			
-2

Operador de multiplicação *

	
< > Input
Python
3 * 5
Copied
>_ Output
			
15

Operador de divisão /

	
< > Input
Python
3 / 5
Copied
>_ Output
			
0.6

Operador módulo %. Retorna o resto de uma divisão

	
< > Input
Python
25 % 2
Copied
>_ Output
			
1

Operador de expoente **

	
< > Input
Python
5 ** 2
Copied
>_ Output
			
25

Operador de divisão inteira //

	
< > Input
Python
25 // 2
Copied
>_ Output
			
12

3.2. Operadores de comparaçãolink image 59

Operador é igual ==

	
< > Input
Python
1 == 1
Copied
>_ Output
			
True

Operador é diferente !=

	
< > Input
Python
1 != 2
Copied
>_ Output
			
True

Operador é maior que >

	
< > Input
Python
3 &gt; 2
Copied
>_ Output
			
True

Operador é menor que <

	
< > Input
Python
2 &lt; 3
Copied
>_ Output
			
True

Operador é maior ou igual que >=

	
< > Input
Python
3 &gt;= 3
Copied
>_ Output
			
True

Operador é menor ou igual que <=

	
< > Input
Python
3 &lt;= 3
Copied
>_ Output
			
True

3.3. Operadores lógicoslink image 60

Operador and

	
< > Input
Python
True and True
Copied
>_ Output
			
True

Operador or

	
< > Input
Python
True or False
Copied
>_ Output
			
True

Operador not

	
< > Input
Python
not False
Copied
>_ Output
			
True

3.4. Operadores de identidadelink image 61

Operador is

	
< > Input
Python
5.3 is 5.3
Copied
>_ Output
			
True

Operador is not

	
< > Input
Python
5.3 is not 5
Copied
>_ Output
			
True

3.5. Operadores de pertinêncialink image 62

Operador in

	
< > Input
Python
x = ["apple", "banana"]
"banana" in x
Copied
>_ Output
			
True

Operador not in

	
< > Input
Python
x = ["apple", "banana"]
"orange" not in x
Copied
>_ Output
			
True

3.6. Operadores bit a bitlink image 63

Operador AND &

	
< > Input
Python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = a &amp; b; # 12 = 0000 1100
c
Copied
>_ Output
			
12

Operador OU |

	
< > Input
Python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = a | b; # 61 = 0011 1101
c
Copied
>_ Output
			
61

Operador XOR ^

	
< > Input
Python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = a ^ b; # 49 = 0011 0001
c
Copied
>_ Output
			
49

Operador NOT ~

	
< > Input
Python
a = 60 # 60 = 0011 1100
c = ~a; # -61 = 1100 0011
c
Copied
>_ Output
			
-61

Operador de deslocamento à esquerda <<

	
< > Input
Python
a = 60 # 60 = 0011 1100
c = a &lt;&lt; 2; # 240 = 1111 0000
c
Copied
>_ Output
			
240

Operador de deslocamento para a direita >>

	
< > Input
Python
a = 60 # 60 = 0011 1100
c = a &gt;&gt; 2; # 15 = 0000 1111
c
Copied
>_ Output
			
15

3.7. Operadores de atribuiçãolink image 64

Operador =

	
< > Input
Python
a = 5
a
Copied
>_ Output
			
5

Operador +=. x += y é equivalente a x = x + y

	
< > Input
Python
a += 5
a
Copied
>_ Output
			
10

Operador -=. x -= y é equivalente a x = x - y

	
< > Input
Python
a -= 5
a
Copied
>_ Output
			
5

Operador *=. x *= y é equivalente a x = x * y

	
< > Input
Python
a *= 3
a
Copied
>_ Output
			
15

Operador /=. x /= y é equivalente a x = x / y

	
< > Input
Python
a /= 3
a
Copied
>_ Output
			
5.0

Operador %=. x %= y é equivalente a `x = x % y

	
< > Input
Python
a = 25
a %= 2
a
Copied
>_ Output
			
1

Operador //=. x //= y é equivalente a x = x // y

	
< > Input
Python
a = 25
a //= 2
a
Copied
>_ Output
			
12

Operador **=. x **= y é equivalente a x = x ** y

	
< > Input
Python
a = 5
a **= 2
a
Copied
>_ Output
			
25

Operador &=. x &= y é equivalente a x = x & y

	
< > Input
Python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
a &amp;= b; # 12 = 0000 1100
a
Copied
>_ Output
			
12

Operador |=. x |= y é equivalente a x = x | y

	
< > Input
Python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
a |= b; # 61 = 0011 1101
a
Copied
>_ Output
			
61

Operador ^=. x ^= y é equivalente a x = x ^ y

	
< > Input
Python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
a ^= b; # 49 = 0011 0001
a
Copied
>_ Output
			
49

Operador >>=. x >>= y é equivalente a x = x >> y

	
< > Input
Python
a = 60 # 60 = 0011 1100
a &lt;&lt;= 2; # 240 = 1111 0000
a
Copied
>_ Output
			
240

Operador <<=. x <<= y é equivalente a x = x << y

	
< > Input
Python
a = 60 # 60 = 0011 1100
a &gt;&gt;= 2; # 15 = 0000 1111
a
Copied
>_ Output
			
15

4. Controle de fluxolink image 65

Para poder utilizar as ferramentas de controle de fluxo é necessário adicionar a instrução, dois pontos : e, em uma nova linha, escrever o código com indentação.

Ao contrário de outras linguagens, Python precisa de indentação (adicionar um espaço em branco) para definir o código dentro de uma ferramenta de controle de fluxo

4.1. Selink image 66

Mediante if podemos criar condicionais

	
< > Input
Python
if len('MaximoFN') == 8:
print('MaximoFN tiene 8 caracteres')
Copied
>_ Output
			
MaximoFN tiene 8 caracteres

Se quisermos criar mais de uma condição, podemos usar elif

	
< > Input
Python
if len('MaximoFN') &lt; 8:
print('MaximoFN tiene menos de 8 caracteres')
elif len('MaximoFN') == 8:
print('MaximoFN tiene 8 caracteres')
Copied
>_ Output
			
MaximoFN tiene 8 caracteres

Se o que queremos é que algo seja executado caso nenhuma das condições indicadas seja cumprida, podemos usar else

	
< > Input
Python
if len('MaximoFN') &lt; 8:
print('MaximoFN tiene menos de 8 caracteres')
elif len('MaximoFN') &gt; 8:
print('MaximoFN tiene más de 8 caracteres')
else:
print('MaximoFN tiene 8 caracteres')
Copied
>_ Output
			
MaximoFN tiene 8 caracteres

Se quisermos escrever tudo em uma única linha

	
< > Input
Python
if len('MaximoFN') == 8: print('MaximoFN tiene 8 caracteres')
Copied
>_ Output
			
MaximoFN tiene 8 caracteres

Mesmo assim, se quisermos escrever tudo em uma linha, mas com várias condições

	
< > Input
Python
print('MaximoFN tiene menos de 8 caracteres') if len('MaximoFN') &lt; 8 else print('MaximoFN tiene más de 8 caracteres') if len('MaximoFN') &gt; 8 else print('MaximoFN tiene 8 caracteres')
Copied
>_ Output
			
MaximoFN tiene 8 caracteres

Se, por exemplo, queremos fazer a estrutura do if, mas não queremos, por enquanto, codificar uma das condições, podemos usar pass

	
< > Input
Python
if len('MaximoFN') &lt; 8:
print('MaximoFN tiene menos de 8 caracteres')
elif len('MaximoFN') &gt; 8:
pass
else:
print('MaximoFN tiene 8 caracteres')
Copied
>_ Output
			
MaximoFN tiene 8 caracteres

4.2. Enquantolink image 67

O loop while é executado enquanto a condição for True

	
< > Input
Python
i = 0
string = 'MaximoFN'
while len(string) &gt; i:
print(string[i], end='')
i += 1
Copied
>_ Output
			
MaximoFN

Se quisermos que o loop pare por alguma condição, usamos break

	
< > Input
Python
i = 0
string = 'MaximoFN'
while len(string) &gt; i:
if string[i] == 'F':
break
print(string[i], end='')
i += 1
Copied
>_ Output
			
Maximo

Se quisermos que uma das iterações não seja executada por algum motivo, usamos continue

	
< > Input
Python
i = 0
string = 'Maximo FN'
while len(string) &gt; i:
if string[i] == ' ':
i += 1
continue
print(string[i], end='')
i += 1
Copied
>_ Output
			
MaximoFN

Por meio de else, pode-se executar um bloco de código se a condição do while não for True

	
< > Input
Python
i = 0
string = 'MaximoFN'
while len(string) &gt; i:
print(string[i], end='')
i += 1
else:
print(" Se ha terminado el while")
Copied
>_ Output
			
MaximoFN
Se ha terminado el while

4.3. Paralink image 68

O loop for é usado para executar código enquanto se itera por uma sequência; esta sequência pode ser qualquer elemento iterável do Python (string, lista, tupla, range, dicionário, set)

	
< > Input
Python
string = 'MaximoFN'
for x in string:
print(x, end='')
Copied
>_ Output
			
MaximoFN
	
< > Input
Python
lista = ['M', 'a', 'x', 'i', 'm', 'o', 'F', 'N']
for x in lista:
print(x, end='')
Copied
>_ Output
			
MaximoFN
	
< > Input
Python
tupla = ('M', 'a', 'x', 'i', 'm', 'o', 'F', 'N')
for x in tupla:
print(x, end='')
Copied
>_ Output
			
MaximoFN
	
< > Input
Python
string = 'MaximoFN'
for i in range(len(string)):
print(string[i], end='')
Copied
>_ Output
			
MaximoFN
	
< > Input
Python
diccionario = {
"letra1": "M",
"letra2": "a",
"letra3": "x",
"letra4": "i",
"letra5": "m",
"letra6": "o",
"letra7": "F",
"letra8": "N",
}
for x in diccionario.values():
print(x, end='')
Copied
>_ Output
			
MaximoFN

Também é possível iterar pelos sets, mas como são elementos não ordenados, não teremos controle da ordem de execução

	
< > Input
Python
set_ = {'M', 'a', 'x', 'i', 'm', 'o', 'F', 'N'}
for x in set_:
print(x, end='')
Copied
>_ Output
			
NximoaMF

Se queremos que o loop pare por alguma condição, usamos break

	
< > Input
Python
string = 'MaximoFN'
for x in string:
if x == 'F':
break
print(x, end='')
Copied
>_ Output
			
Maximo

Se quisermos que uma das iterações não seja executada por algum motivo, usamos continue

	
< > Input
Python
string = 'Maximo FN'
for x in string:
if x == ' ':
continue
print(x, end='')
Copied
>_ Output
			
MaximoFN

Por meio de else, é possível executar um bloco de código se a condição do while não for True

	
< > Input
Python
string = 'MaximoFN'
for x in string:
print(x, end='')
else:
print(" Se ha terminado el for")
Copied
>_ Output
			
MaximoFN
Se ha terminado el for

Se, por exemplo, quisermos fazer a estrutura do for, mas não quisermos, por enquanto, codificar o seu interior, podemos usar pass

	
< > Input
Python
string = 'MaximoFN'
for x in string:
pass
print('Interior del for no codificado')
Copied
>_ Output
			
Interior del for no codificado

5. Funçõeslink image 69

Uma função é uma porção de código que pode ser executada tantas vezes quanto você quiser. Podem ser passados argumentos e ela pode devolver dados como resultado

Para definir uma função, começa-se com a palavra reservada def, seguida do nome da função, parênteses (), dois pontos : e, em seguida, em uma nova linha indentada, o código da função

	
< > Input
Python
def funcion():
print('MaximoFN')
Copied

Para chamar a função, basta escrever o seu nome

	
< > Input
Python
funcion()
Copied
>_ Output
			
MaximoFN

A las funções podem receber todos os argumentos que quiser, dentro dos parênteses e separados por vírgulas

	
< > Input
Python
def funcion(string1, string2):
print(string1 + ' ' + string2)
funcion("Hola", "MaximoFN")
Copied
>_ Output
			
Hola MaximoFN

Quando a função é chamada, deve-se passar o mesmo número de argumentos que foram declarados; se forem passados mais ou menos, obteríamos um erro.

Se não sabemos os argumentos que a função vai receber, podemos usar *args, ou seja, colocando um * antes dos argumentos indica-se que o número de argumentos é livre.

Ao fazer isso, passa-se uma tupla (lembremos que ela é imutável) com os argumentos

	
< > Input
Python
def funcion(*argumentos):
numero_argumentos = len(argumentos)
for i in range(numero_argumentos):
print(argumentos[i], end=' ')
funcion("funcion", "con", "varios", "argumentos", "sin", "especificar", "cuantos")
Copied
>_ Output
			
funcion con varios argumentos sin especificar cuantos

No caso de não saber a ordem dos argumentos de uma função, podemos indicar o argumento que queremos passar, indicando o seu nome

	
< > Input
Python
def funcion(argumento1, argumento2, argumento3):
print(argumento1 + ' '+ argumento2 + ' ' + argumento3)
funcion(argumento3 = "MaximoFN", argumento1 = "Blog", argumento2 = "de")
Copied
>_ Output
			
Blog de MaximoFN

No caso de querer passar os argumentos com seu nome, mas caso não se saiba quantos argumentos serão passados, pode-se usar **kwargs. Neste caso, será passado um dicionário com os argumentos

	
< > Input
Python
def funcion(**kargumentos):
print("Autor del blog: " + kargumentos["autor"])
funcion(blog = "Blog", pertenencia = "de", autor = "MaximoFN")
Copied
>_ Output
			
Autor del blog: MaximoFN

Se quisermos que algum argumento tenha um valor padrão, podemos indicá-lo entre os parênteses da função. Dessa forma, se ao chamar a função esse argumento não for passado, ele terá na função o valor padrão.

	
< > Input
Python
def funcion(argumento1, argumento2, argumento3 = "MaximoFN"):
print(argumento1 + ' '+ argumento2 + ' ' + argumento3)
funcion("Blog", "de")
Copied
>_ Output
			
Blog de MaximoFN

Pode-se passar qualquer tipo de dado como argumento. Por exemplo, se for passada uma lista como argumento, dentro da função, esse argumento será tratado como uma lista

	
< > Input
Python
def funcion(argumento):
longitud_lista = len(argumento)
for i in range(longitud_lista):
print(argumento[i], end=' ')
funcion(["Blog", "de", "MaximoFN"])
Copied
>_ Output
			
Blog de MaximoFN

As funções podem devolver dados, isso é feito por meio da palavra reservada return

	
< > Input
Python
def funcion(argumento):
longitud_lista = len(argumento)
string = ""
for i in range(longitud_lista):
string = string + argumento[i] + ' '
return string
print(funcion(["Blog", "de", "MaximoFN"]))
Copied
>_ Output
			
Blog de MaximoFN

Podem devolver mais de um dado

	
< > Input
Python
def funcion(argumento):
longitud_lista = len(argumento)
string0 = argumento[0]
string1 = argumento[1]
string2 = argumento[2]
return string0, string1, string2
dato0, dato1, dato2 = funcion(["Blog", "de", "MaximoFN"])
print(dato0 + ' ' + dato1 + ' ' + dato2)
Copied
>_ Output
			
Blog de MaximoFN

Se um dos dados retornados não nos interessa, podemos ignorá-lo com _

	
< > Input
Python
def funcion(argumento):
longitud_lista = len(argumento)
string0 = argumento[0]
string1 = argumento[1]
string2 = argumento[2]
return string0, string1, string2
_, _, dato_de_interes = funcion(["Blog", "de", "MaximoFN"])
print(dato_de_interes)
Copied
>_ Output
			
MaximoFN

Se, por exemplo, quisermos fazer a estrutura da função, mas não quisermos, por enquanto, codificar o interior, podemos usar pass

	
< > Input
Python
def funcion():
pass
funcion()
Copied

Uma função pode chamar a si mesma; isso é chamado de recursão ou recursividade da função.

Por exemplo, podemos usar esta propriedade para calcular o fatorial de um número

	
< > Input
Python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n-1)
factorial(5)
Copied
>_ Output
			
120

5.1. Funções embutidaslink image 70

Há uma série de funções já definidas em Python que podem ser usadas, como por exemplo a função abs(), que devolve o valor absoluto

	
< > Input
Python
abs(-5)
Copied
>_ Output
			
5

A seguir, é apresentada uma lista dessas funções

	
< > Input
Python
import builtins
dir(builtins)
Copied
>_ Output
			
['ArithmeticError',
'AssertionError',
'AttributeError',
'BaseException',
'BlockingIOError',
'BrokenPipeError',
'BufferError',
'BytesWarning',
'ChildProcessError',
'ConnectionAbortedError',
'ConnectionError',
'ConnectionRefusedError',
'ConnectionResetError',
'DeprecationWarning',
'EOFError',
'Ellipsis',
'EnvironmentError',
'Exception',
'False',
'FileExistsError',
...
'slice',
'sorted',
'staticmethod',
'str',
'sum',
'super',
'tuple',
'type',
'vars',
'zip']

5.2. Documentação de uma funçãolink image 71

Pode-se adicionar uma explicação de uma função que criamos por meio de um comentário no início da função; dessa forma, quando chamarmos a built-in function help(), ela nos mostrará essa explicação.

	
< > Input
Python
def funcion():
"Esta es la explicación de la función"
None
help(funcion)
Copied
>_ Output
			
Help on function funcion in module __main__:
funcion()
Esta es la explicación de la función

Outra opção para ver a explicação da função é usar o método __doc__ da função

	
< > Input
Python
funcion.__doc__
Copied
>_ Output
			
'Esta es la explicación de la función'

5.3. Decoradoreslink image 72

Os decoradores são uma funcionalidade do Python que permite adicionar novas características a uma função

Cria-se uma função decoradora que tem como parâmetro outra função. Então, a função decoradora adiciona a nova característica à função que recebe

	
< > Input
Python
def decorador(parametro_funcion):
"""Agrega barritas arriba y abajo de la funcion"""
def envoltorio():
"""Aplica las barritas al texto"""
print("==================")
parametro_funcion()
print("==================")
return envoltorio
def funcion():
print("MaximoFN")
funcion_envoltorio = decorador(funcion)
print('Función sin decoradores: ')
funcion()
print(' Función con decoradores: ')
funcion_envoltorio()
Copied
>_ Output
			
Función sin decoradores:
MaximoFN
Función con decoradores:
==================
MaximoFN
==================

Mas outra forma mais poderosa de usar os decoradores é por meio do uso de @ e o nome do decorador antes da função.

Ou seja, primeiro se define o decorador e, em seguida, chama-se uma função com o decorador definido

	
< > Input
Python
def decorador2(parametro_funcion2):
"""Agrega barritas arriba y abajo de la funcion"""
def envoltorio2():
"""Aplica las barritas al texto"""
print("==================")
parametro_funcion2()
print("==================")
return envoltorio2
@decorador2
def funcion2():
print("MaximoFN")
print('Función con decoradores: ')
funcion2()
Copied
>_ Output
			
Función con decoradores:
==================
MaximoFN
==================

5.4. *args e **kwargslink image 73

*args e **kwargs são argumentos opcionais que podem ser usados ao definir uma função em Python. A sintaxe é a seguinte:

def mi_funcion(arg1, arg2, *args, **kwargs):
      # código da função aqui

5.4.1. *argslink image 74

*args é usado para enviar um número variável de argumentos para uma função. Ao usar *args, você pode enviar uma quantidade variável de argumentos para a função sem precisar especificar o número exato de argumentos que a função precisa. Os argumentos são recebidos na função como uma tupla.

	
< > Input
Python
def saludo(saludo, *nombres):
for nombre in nombres:
print(f"{saludo}, {nombre}")
saludo("Hola", "Alicia", "Roberto", "Carlos")
Copied
>_ Output
			
Hola, Alicia
Hola, Roberto
Hola, Carlos

5.4.2. **kwargslink image 75

**kwargs é usado da mesma forma, mas para enviar um número variável de argumentos com palavras-chave (keyword arguments) para uma função. Ao usar **kwargs, você pode enviar uma quantidade variável de argumentos para a função e especificar o valor de cada argumento usando seu nome. Os argumentos são recebidos na função como um dicionário.

	
< > Input
Python
def saludo(saludo, **personas):
for key, value in personas.items():
print(f"{saludo} {key}, tu edad es {value} años")
saludo("Hola", Juan=22, Maria=32, Pedro=25)
Copied
>_ Output
			
Hola Juan, tu edad es 22 años
Hola Maria, tu edad es 32 años
Hola Pedro, tu edad es 25 años

6. Funções adicionaislink image 76

6.1. Funções *lambda*link image 77

Uma função *lambda* é uma pequena função anônima.

Uma função *lambda* pode receber qualquer número de argumentos, mas só pode ter uma expressão.

As funções *lambda* são definidas da seguinte maneira:

argumentos lambda : expressão
	
< > Input
Python
x = lambda a : a + 10
print(x(5))
Copied
>_ Output
			
15
	
< > Input
Python
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))
Copied
>_ Output
			
13

O poder de *lambda* se mostra melhor quando é usado como uma função anônima dentro de outra função.

	
< > Input
Python
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(f"mydoubler: {mydoubler(11)}")
print(f"mytripler: {mytripler(11)}")
Copied
>_ Output
			
mydoubler: 22
mytripler: 33

6.2. Função maplink image 78

A função map permite aplicar a cada elemento de uma estrutura iterável uma função

	
< > Input
Python
lista = [1, 2, 3]
def funcion_mas_1(valor):
return valor + 1
lista_modificada = list(map(funcion_mas_1, lista))
lista_modificada
Copied
>_ Output
			
[2, 3, 4]

Isso é equivalente a usar list comprehension

	
< > Input
Python
lista_modificada = [funcion_mas_1(x) for x in lista]
lista_modificada
Copied
>_ Output
			
[2, 3, 4]

6.3. Função filterlink image 79

A função filter permite selecionar os elementos de uma estrutura iterável que cumpram uma condição

	
< > Input
Python
lista = [1, 2, 3, 4, 5, 6, 7]
def esPar(valor):
return valor % 2 == 0
lista_filtrada = list(filter(esPar, lista))
lista_filtrada
Copied
>_ Output
			
[2, 4, 6]

Isso é equivalente a usar list comprehension

	
< > Input
Python
lista_filtrada = [x for x in lista if esPar(x)]
lista_filtrada
Copied
>_ Output
			
[2, 4, 6]

6.4. Função reducelink image 80

A função reduce permite realizar tarefas acumulativas sobre estruturas iteráveis

	
< > Input
Python
from functools import reduce
lista = [1, 22, 33]
def acumular(valor, acumulador):
print(f'valor = {valor}, acumulador = {acumulador}, acumulacion = {valor + acumulador}')
return valor + acumulador
acumulacion = reduce(acumular, lista)
print(f' acumulacion = {acumulacion}')
Copied
>_ Output
			
valor = 1, acumulador = 22, acumulacion = 23
valor = 23, acumulador = 33, acumulacion = 56
acumulacion = 56

6.5. Função ziplink image 81

Com a função zip é possível combinar várias estruturas iteráveis em uma só, ou seja, ela permite agrupar vários elementos das estruturas *Ax* em uma única estrutura *B*. A estrutura *B* é formada por tuplas dos elementos das estruturas *Ax*

	
< > Input
Python
nombres = ["Manolo", "Andres", "Fernando"]
altura = [181, 178, 180]
my_zip = list(zip(nombres, altura))
my_zip
Copied
>_ Output
			
[('Manolo', 181), ('Andres', 178), ('Fernando', 180)]

6.5. Geradoreslink image 82

Suponha que queremos iterar sobre uma sequência de números, mas de uma forma especial que não nos oferece nenhum tipo de loop. Isso podemos resolver com os geradores. Para poder fazer isso, a função geradora não precisa devolver o valor com return, mas sim com yield para que saiba que tem de continuar iterando

	
< > Input
Python
def iterador_custom(N):
for i in range (N):
if i % 3 == 0:
yield i
generador = iterador_custom(20)
for i in generador:
print(i)
Copied
>_ Output
			
0
3
6
9
12
15
18

Acabámos de fazer um iterador por números múltiplos de 3

6.6. Funções de ordem superiorlink image 83

Podemos criar funções que recebem outras funções como parâmetros, de modo que a função que recebe outra função como parâmetro é chamada de função de ordem superior (high order function). Vejamos um exemplo

	
< > Input
Python
def increment(x):
return x + 1
def hof(f, x):
return 2*f(x)
print(hof(increment, 3))
Copied
>_ Output
			
8

---

➡️ **Continua na Parte 3: clases, objetos y temas avanzados**, onde darás o salto para a programação orientada a objetos e para os módulos.

Continuar lendo

Últimos posts -->

Você viu esses projetos?

Gymnasia

Gymnasia Gymnasia
React Native
Expo
TypeScript
FastAPI
Next.js
OpenAI
Anthropic

Aplicativo móvel de treino pessoal com assistente de IA, biblioteca de exercícios, acompanhamento de rotinas, dieta e medidas corporais

Horeca chatbot

Horeca chatbot Horeca chatbot
Python
LangChain
PostgreSQL
PGVector
React
Kubernetes
Docker
GitHub Actions

Chatbot conversacional para cozinheiros de hotéis e restaurantes. Um cozinheiro, gerente de cozinha ou serviço de quarto de um hotel ou restaurante pode falar com o chatbot para obter informações sobre receitas e menus. Mas também implementa agentes, com os quais pode editar ou criar novas receitas ou menus

Naviground

Naviground Naviground
Ver todos os projetos -->
>_ Disponível para projetos

Tem um projeto com IA?

Vamos conversar.

maximofn@gmail.com

Especialista em Machine Learning e Inteligência Artificial. Desenvolvo soluções com IA generativa, agentes inteligentes e modelos personalizados.

Quer assistir alguma palestra?

Últimas palestras -->

Quer melhorar com essas dicas?

Últimos tips -->

Use isso localmente

Os espaços do Hugging Face nos permitem executar modelos com demos muito simples, mas e se a demo quebrar? Ou se o usuário a deletar? Por isso, criei contêineres docker com alguns espaços interessantes, para poder usá-los localmente, aconteça o que acontecer. Na verdade, se você clicar em qualquer botão de visualização de projeto, ele pode levá-lo a um espaço que não funciona.

Flow edit

Flow edit Flow edit

Edite imagens com este modelo de Flow. Baseado em SD3 ou FLUX, você pode editar qualquer imagem e gerar novas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos os contêineres -->
>_ Disponível para projetos

Tem um projeto com IA?

Vamos conversar.

maximofn@gmail.com

Especialista em Machine Learning e Inteligência Artificial. Desenvolvo soluções com IA generativa, agentes inteligentes e modelos personalizados.

Você quer treinar seu modelo com esses datasets?

short-jokes-dataset

HuggingFace

Dataset com piadas em inglês

Uso: Fine-tuning de modelos de geração de texto humorístico

231K linhas 2 colunas 45 MB
Ver no HuggingFace →

opus100

HuggingFace

Dataset com traduções de inglês para espanhol

Uso: Treinamento de modelos de tradução inglês-espanhol

1M linhas 2 colunas 210 MB
Ver no HuggingFace →

netflix_titles

HuggingFace

Dataset com filmes e séries da Netflix

Uso: Análise de catálogo Netflix e sistemas de recomendação

8.8K linhas 12 colunas 3.5 MB
Ver no HuggingFace →
Ver mais datasets -->