Pular para o conteúdo

Funções embutidas

Definição

Funções embutidas (built-in) são funções que já estão disponíveis no Python para utilização (não há a necessidade de importá-las de algum módulo). A próxima seção discute as funções embutidas do Python 3.10: abs(), aiter(), all(), any(), anext(), ascii(), bin(), bool(), breakpoint(), bytearray(), bytes(), callable(), chr(), classmethod(), compile(), complex(), delattr(), dict(), dir(), divmod(), enumerate(), eval(), exec(), filter(), float(), format(), frozenset(), getattr(), globals(), hasattr(), hash(), help(), hex(), id(), input(), int(), isinstance(), issubclass(), iter(), len(), list(), locals(), map(), max(), memoryview(), min(), next(), object(), oct(), open(), ord(), pow(), print(), property(), range(), repr(), reversed(), round(), set(), setattr(), slice(), sorted(), staticmethod(), str(), sum(), super(), tuple(), type(), vars(), zip(), __import__()

Exemplos

  • abs(x) – Retorna o valor absoluto (não negativo) de um número.
a = -4
b = -3.65
c = -3.10
d = -3.4 + 2.3j
print("abs(a) =", abs(a), "abs(b) =", abs(b), "abs(c) =", abs(c), "abs(d) =", abs(d))

A resposta do programa é

abs(a) = 4 abs(b) = 3.65 abs(c) = 3.1 abs(d) = 4.104875150354758
  • aiter() – Retorna um iterador assíncrono para um iterável assíncrono. No exemplo abaixo, temos a classe Numeros com dois métodos: __aiter__ e __anext__. O método __aiter__ é usado para inicializar o objeto e o método __anext__ é executado a cada iteração. Logo, a função aiter() retorna a instância de um objeto (iterador assíncrono) da classe Numeros (iterável assíncrono) com i igual a zero; e a função anext() incrementa i, toda vez que é chamada, após dormir por 1 segundo.
from asyncio import sleep, run

class Numeros:
    def __aiter__(self):
        self.i = 0
        return self
    async def __anext__(self):
        await sleep(1)
        self.i += 1
        return self.i

async def gerarNumeros():
    ObjFuncao = aiter(Numeros())
    try:
        while True:
            num  = await anext(ObjFuncao)
            print(num)
            if num >= 5:
                break
    except StopAsyncIteration:
        return

run(gerarNumeros())
  • all(item) – Retorna True se todos os elementos de item são verdadeiros ou se item for vazio.
lista1 = [1, 6, "abc", True]
print("lista1 =", all(lista1))
lista2 = []
print("lista2 =", all(lista2))
lista3 = [1, False, "abc", True]
print("lista3 =", all(lista3))

A saída mostrada pelo programa:

lista1 = True
lista2 = True
lista3 = False
  • any(item) – Retorna True se algum elemento de item for verdadeiro. Se item for vazio, retorna False.
lista1 = [1, 6, "abc", True]
print("lista1 =", any(lista1))
lista2 = []
print("lista2 =", any(lista2))
lista3 = [1, False, "abc", True]
print("lista3 =", any(lista3))

Ao final da execução, o programa mostra:

lista1 = True
lista2 = False
lista3 = True
  • anext() – Retorna o próximo item de um iterador assíncrono. Veja aiter() para um exemplo.
  • ascii(objeto) – Substitui qualquer caractere não ascii do objeto por sequências de escapes \x, \u or \U.
frase1 = "Que ninguém se engane, só se consegue a simplicidade através de muito trabalho"
frase2 = "äçïÜ"
frase3 = '''Frase com
quebra de linha'''
lista = ["maça", "limão", "constituição"]

print("\x50\x79\x74\x68\x6f\x6e\x20\xe9\x20\x31\x30\x21")
print(ascii(frase1))
print(ascii(frase2))
print(ascii(frase3))
print(ascii(lista))

A resposta do programa é

Python é 10!
'Que ningu\xe9m se engane, s\xf3 se consegue a simplicidade atrav\xe9s de muito trabalho'
'\xe4\xe7\xef\xdc'
'Frase com\nquebra de linha'
['ma\xe7a', 'lim\xe3o', 'constitui\xe7\xe3o']
  • bin(x) – Retorna o valor binário de um número inteiro. Como esta função retorna o valor com o prefixo ‘0b’, pode-se usar a função format() no lugar da bin() para omitir o prefixo.
a = 12
b = 1560
c = -12
print("*** com '0b'")
print("a =", bin(a))
print("b =", bin(b))
print("c =", bin(c))
print("\n*** sem '0b'")
print("a =", format(12, 'b'))
print("b =", format(1560, 'b'))
print("c =", format(-12, 'b'))

A saída do programa é mostrada abaixo.

*** com '0b'
a = 0b1100
b = 0b11000011000
c = -0b1100

*** sem '0b'
a = 1100
b = 11000011000
c = -1100
  • bool(x) – Retorna um valor booleano (True ou False). Se x é falso, zero ou foi omitido, a função retorna False; senão a função retorna True.
a = [1, "aba", False]
b = []
c = 2.56
d = False
e = 0
print("a =", bool(a))
print("b =", bool(b))
print("c =", bool(c))
print("d =", bool(d))
print("e =", bool(e))

O resultado do programa é:

a = True
b = False
c = True
d = False
e = False
  • breakpoint() – Para a execução do programa e entra no modo de depuração do Python.
a = 10
b = 5
if a + b == 15:
   breakpoint()
   print("a + b =", a + b)
print("*** Fim do programa")

Note que a função breakpoint() é chamada dento da estrutura if. É então aberto uma linha de comandos para que o usuário possa interagir com o programa. No exemplo abaixo, são verificados os valores das variáveis a e b. Depois o caractere c é digitado para que a execução do programa continue. A sigla pdb corresponde a “Python Debugger”.

> /home/morganna/Área de Trabalho/teste.py(5)<module>()
-> print("a + b =", a + b)
(Pdb) print(a)
10
(Pdb) print(b)
5
(Pdb) print(a**b)
100000
(Pdb) c
a + b = 15
*** Fim do programa

São outros exemplos de comandos que podem ser usados no depurador:

      h(elp) h(help) – lista os comandos disponíveis no depurador.

(Pdb) h

Documented commands (type help <topic>):
========================================
EOF    c          d        h         list      q        rv       undisplay
a      cl         debug    help      ll        quit     s        unt      
alias  clear      disable  ignore    longlist  r        source   until    
args   commands   display  interact  n         restart  step     up       
b      condition  down     j         next      return   tbreak   w        
break  cont       enable   jump      p         retval   u        whatis   
bt     continue   exit     l         pp        run      unalias  where    

Miscellaneous help topics:
==========================
exec  pdb

      l(list) – lista o código fonte do programa.

(Pdb) l
  1  	a = 10
  2  	b = 5
  3  	if a + b == 15:
  4  	   breakpoint()
  5  ->	   print("a + b =", a + b)
  6  	print("*** Fim do programa")
[EOF]
  • bytearray() – Retorna um objeto bytearray (vetor de bytes). Esta função pode ter três argumentos: source (se for um valor inteiro, indica o tamanho do vetor com bytes nulos; se for uma string, define o conteúdo do vetor; se for um objeto, é usado para inicializar um vetor); encoding (codificação usada com a string); error (especifica o que fazer no caso de erro). Sem nenhum argumento é definido, é criado um vetor de tamanho zero. Um objeto bytearray pode ser modificado.
vetor1 = bytearray("Python é 10!", 'utf-8')
print("vetor1 = ", vetor1, ", tam =", len(vetor1))
vetor2 = bytearray("Python é 10!", 'utf-16')
print("vetor2 = ", vetor2, ", tam =", len(vetor2))
vetor3 = bytearray(3)
print("vetor3 = ", vetor3, ", tam =", len(vetor3))
vetor4 = bytearray([1, 23, 18])
print("vetor4 = ", vetor4, ", tam =", len(vetor4))
vetor5 = bytearray()
print("vetor5 = ", vetor5, ", tam =", len(vetor5))

A saída mostrada pelo programa é

vetor1 =  bytearray(b'Python \xc3\xa9 10!') , tam = 13
vetor2 =  bytearray(b'\xff\xfeP\x00y\x00t\x00h\x00o\x00n\x00 \x00\xe9\x00 \x001\x000\x00!\x00') , tam = 26
vetor3 =  bytearray(b'\x00\x00\x00') , tam = 3
vetor4 =  bytearray(b'\x01\x17\x12') , tam = 3
vetor5 =  bytearray(b'') , tam = 0

É possível modificar um objeto bytearray como mostra o exemplo abaixo.

vetor = bytearray("abc", 'utf-8')
print("vetor = ", vetor, ", tam =", len(vetor))
vetor[1:2] = b'x'
print("vetor = ", vetor, ", tam =", len(vetor))

Note que apenas um byte foi modificado.

vetor =  bytearray(b'abc') , tam = 3
vetor =  bytearray(b'axc') , tam = 3
  • bytes() – Retorna um objeto bytes (vetor de bytes). Esta função pode ter três argumentos: source (se for um valor inteiro, indica o tamanho do vetor com bytes nulos; se for uma string, define o conteúdo do vetor; se for um objeto, é usado para inicializar um vetor); encoding (codificação usada com a string); error (especifica o que fazer no caso de erro). Sem nenhum argumento é definido, é criado um vetor de tamanho zero. Um objeto bytes não pode ser modificado.
vetor1 = bytes("Python é 10!", 'utf-8')
print("vetor1 = ", vetor1, ", tam =", len(vetor1))
vetor2 = bytes("Python é 10!", 'utf-16')
print("vetor2 = ", vetor2, ", tam =", len(vetor2))
vetor3 = bytes(3)
print("vetor3 = ", vetor3, ", tam =", len(vetor3))
vetor4 = bytes([1, 23, 18])
print("vetor4 = ", vetor4, ", tam =", len(vetor4))
vetor5 = bytes()
print("vetor5 = ", vetor5, ", tam =", len(vetor5))

O resultado do programa é

vetor1 =  b'Python \xc3\xa9 10!' , tam = 13
vetor2 =  b'\xff\xfeP\x00y\x00t\x00h\x00o\x00n\x00 \x00\xe9\x00 \x001\x000\x00!\x00' , tam = 26
vetor3 =  b'\x00\x00\x00' , tam = 3
vetor4 =  b'\x01\x17\x12' , tam = 3
vetor5 =  b'' , tam = 0
  • callable(objeto) – Retorna True se o objeto é chamável e retorna False no caso contrário. Um objeto é chamável quando pode ser chamado usando o operador ().
x = 10
def teste():
  print("ok")
print("x é chamável =", callable(x))
print("teste é chamável =", callable(teste))

A resposta é

x é chamável = False
teste é chamável = True
  • chr(x) – Retorna o caractere que corresponde ao inteiro x no código Unicode.
print("char 65 (Hex 41)        =", chr(65))
print("char 97 (Hex 61)        =", chr(97))
print("char 956 (Hex 03BC)     =", chr(956))
print("char 9757 (Hex 261D)    =", chr(9757))
print("char 65312 (Hex FF20)   =", chr(65312))
print("char 128522 (Hex 1F60A) =", chr(128522))

O programa apresenta a seguinte saída:

char 65 (Hex 41)        = A
char 97 (Hex 61)        = a
char 956 (Hex 03BC)     = μ
char 9757 (Hex 261D)    = ☝
char 65312 (Hex FF20)   = @
char 128522 (Hex 1F60A) = 😊
  • classmethod() – Transforma um método de instância em um método de classe. Um método de instância pode acessar livremente atributos e outros métodos da classe do objeto instanciado. Um método de classe é uma função que não depende do conteúdo de um objeto ou da execução da instância de uma classe. O exemplo abaixo mostra o uso de um método de instância. Note que é necessário criar um objeto, antes de usar o método.
class Aluno:
    nome = "Maria Flor"
    idade = 18
    def dadosAluno(info):
        print("Nome:", info.nome, ", idade:", info.idade)
estudante = Aluno()
estudante.dadosAluno()

Entretanto, é possível transformar o método dadosAluno() em método de classe e usá-lo sem a necessidade de criar um objeto da classe Aluno.

class Aluno:
    nome = "Maria Flor"
    idade = 18
    def dadosAluno(info):
        print("Nome:", info.nome, ", idade:", info.idade)
Aluno.dadosAluno=classmethod(Aluno.dadosAluno)
Aluno.dadosAluno()

Outra forma de fazer essa transformação é usar o decorador @classmethod.

class Aluno:
    nome = "Maria Flor"
    idade = 18
    @classmethod
    def dadosAluno(info):
        print("Nome:", info.nome, ", idade:", info.idade)
Aluno.dadosAluno()

docs.python.org/pt-br/3/library/functions.html#exec(abrir em uma nova aba)

Todos os programas acima apresentam a mesma saída:

Nome: Maria Flor , idade: 18
  • compile() – Compila o argumento em código ou em objeto AST (Abstract Syntax Tree). O código pode ser executado por exec() ou eval(). O primeiro exemplo, mostrado abaixo, compila o código que apresenta o resultado da multiplicação de duas variáveis x e y. O segundo argumento de compile(), representado por uma string vazia, corresponde ao nome do arquivo onde o código poderia ser lido.
programa = 'x=5\ny=10\nprint("resultado =",x * y)'  
codigo = compile(programa, '', 'exec')  
exec(codigo)

O segundo exemplo lê um arquivo Python, cria uma string e executa o script lido. Note que o segundo parâmetro da função compile() não precisa novamente ser definido.

arq = open('teste.py', 'r')
programa = arq.read()
arq.close()
codigo = compile('programa', '', 'exec')
exec(programa)

A função eval() do Python avalia dinamicamente uma expressão. O terceiro exemplo de compile() verifica uma expressão lógica (10 < 20 ?) e em seguida calcula o resultado de 10^2. O resultado do programa é: True e 100.

x = 10
res = compile('x < 20', '', 'eval')
print(eval(res))
res = compile('x ** 2', '', 'eval')
print(eval(res))

O quarto exemplo cria um objeto AST. AST é uma ferramenta Python usada para interagir diretamente com o código python e modificá-lo. Dado um código-fonte, o compilador identifica palavras-chave e cria tokens. Cada token representa um “átomo” de uma instrução. Os tokens são então organizados em uma árvore onde os nós são os “átomos” das instruções. O compilador pode aplicar várias otimizações ao AST e, finalmente, convertê-lo em código binário.

import ast
astparse = ast.parse('''  
a = 10 
b = 20
print(a+b)  
''')  
print()   
exec(compile(astparse, filename="", mode="exec"))

Para ver a estrutura do objeto AST do programa acima use:

print(ast.dump(astparse, indent=5))

A resposta é

Module(
     body=[
          Assign(
               targets=[
                    Name(id='a', ctx=Store())],
               value=Constant(value=10)),
          Assign(
               targets=[
                    Name(id='b', ctx=Store())],
               value=Constant(value=20)),
          Expr(
               value=Call(
                    func=Name(id='print', ctx=Load()),
                    args=[
                         BinOp(
                              left=Name(id='a', ctx=Load()),
                              op=Add(),
                              right=Name(id='b', ctx=Load()))],
                    keywords=[]))],
     type_ignores=[])
  • complex() – Retorna um número complexo com o valor real + imag*1j ou converte uma string ou número para um número complexo.
z = complex(4, -2)
print("(1) z =", z)
z = complex(1)
print("(2) z =", z)
z = complex()
print("(3) z =", z)
z = complex("4-7j")
print("(4) z =", z)

A saída do programa mostra:

(1) z = (4-2j)
(2) z = (1+0j)
(3) z = 0j
(4) z = (4-7j)
  • delattr() – Remove um atributo de um objeto. No exemplo abaixo, o atributo email é deletado da classe Aluno. Note que estudante é um objeto da classe Aluno.
class Aluno:  
    matricula = 202212100076 
    nome = "Maria Flor"  
    email = "flor@gmail.com"
estudante = Aluno()
print(dir(estudante), "\n")
delattr(Aluno,'email')
print(dir(estudante))

Como consequência, o atributo email é deletado do objeto estudante que é uma instância de Aluno. Não é possível deletar atributos de objetos.

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'email', 'matricula', 'nome'] 

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'matricula', 'nome']
dicionario = dict(nome = "Maria Flor", idade = 18, curso = "BSI")
print(dicionario)
print("nome =", dicionario["nome"])
  • dir() – Devolve a lista de nomes no escopo local atual se nenhum argumento for passado. Devolve a lista de atributos válidos para o argumento passado.
class Aluno:  
    matricula = 202212100076 
    nome = "Maria Flor"  
    email = "flor@gmail.com"
lista = [1, "abc"]
num = 12.5
print("***** dir() =", dir(), "\n")
print("***** dir(Aluno) =", dir(Aluno), "\n")
print("***** dir(lista) =", dir(lista), "\n")
print("***** dir(num) =", dir(num))

A saída do programa é:

***** dir() = ['Aluno', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'lista', 'num'] 

***** dir(Aluno) = ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'email', 'matricula', 'nome'] 

***** dir(lista) = ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] 

***** dir(num) = ['__abs__', '__add__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__int__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__round__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setformat__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
  • divmod() – retorna o quociente (valor inteiro) e o resto da divisão.
a = 4.3
b = 1.5
print(divmod(a, b))
print(divmod(b, a))

Abaixo a resposta do programa. Note que: a) 2.0 \times 1.5 + 1.2999 \approx 4.3 ; b) 0 \times 4.3 + 1.5 = 1.5 .

(2.0, 1.2999999999999998)
(0.0, 1.5)
  • enumerate() – Devolve um objeto enumerado. O argumento precisa ser um objeto que suporta iteração.
alunos = ['Maria', 'Pedro', 'José', 'Tereza']
numeros = {1, 5, 91, 102}
dicionario = dict(nome = "Maria Flor", idade = 18, curso = "BSI")
print(list(enumerate(alunos)))
print(list(enumerate(numeros, start=2)))
print(list(enumerate(dicionario, start=5)))

Abaixo a resposta.

[(0, 'Maria'), (1, 'Pedro'), (2, 'José'), (3, 'Tereza')]
[(2, 1), (3, 91), (4, 5), (5, 102)]
[(5, 'nome'), (6, 'idade'), (7, 'curso')]
  • eval() – avalia o argumento passado.
a = 5
print(eval('a**3'))
b = eval('5 > 3')
print(b)
eval('print("a =", a)')
expressao = 'a*(a+1)*(a+2)'
print(eval(expressao))

A saída apresentada pelo programa é:

125
True
a = 5
210
  • exec() – executa código Python.
programa = 'a = 10\nb=5\nprint("Resultado =", a*b)'
exec(programa)

O programa tem como resposta:

Resultado = 50
  • filter() – Recebe dois argumentos: um elemento iterável e uma função. Os elementos que compõem o elemento interável são testados pela função. Se o resultado do teste for False, o elemento é descartado; se o resultado do teste for True, o elemento é retornado. Se a função fornecida for None, todos os elementos considerados False são removidos (o objeto None no Python denota falta de valor).
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
NumeroPar = filter(lambda x: (x%2 == 0), numeros)
print("Numeros pares:", list(NumeroPar))
lista = ["a", "0", 0, "None", None, "2", 2]
nova_lista = filter(None, lista)
print("Valores verdadeiros:", list(nova_lista))

O programa acima apresenta dois exemplos do uso da função filter(). O primeiro exemplo seleciona os números pares em uma lista que possui valores de 1 a 10. O segundo exemplo retira os elementos None e 0 da lista, pois eles correspondem ao valor booleano False. Note que os elementos “None” e “0” não são removidos.

Numeros pares: [2, 4, 6, 8, 10]
Valores verdadeiros: ['a', '0', 'None', '2', 2]
print(float('+1.2345'))
print(float('   -12345'))
print(float('1e-00012345'))
print(float('+1.2345E6'))
print(float('+1.2345E-6'))
print(float('-Infinity'))
print(float('+Infinity'))

A resposta do programa é:

1.2345
-12345.0
0.0
1234500.0
1.2345e-06
-inf
inf
  • format() – formata o(s) valor(es) especificado(s) e os insere dentro do espaço reservado da string. O espaço reservado é definido usando colchetes.
txt = "{}, é {}! Vamos {}?"
print(txt.format("Python", "10", "aprender"))

import math
txt = chr(928) + " = {:.6f}"
print(txt.format(math.pi))

O programa apresenta dois exemplos com a função format(). No primeito exemplo, três argumentos são passados para a função. No segundo exemplo, o valor de \pi é mostrado com seis casas decimais. Abaixo a resposta do programa.

Python, é 10! Vamos aprender?
Π = 3.141593

Outros formatos podem ser usados com a função format(). Veja a página da w3school para mais detalhes.

  • frozenset() – Cria um conjunto (set) imutável a partir de um conjunto mutável. Isto significa que os elementos do novo conjunto não podem ser nem alterados e nem deletados. Além disso, novos elementos não podem ser incluídos.
letras = ('a', 'b', 'c', 'd', 'e')
conj_imut = frozenset(letras)
print('O conjunto imutável:', conj_imut)
try:
  conj_imut.add('f')
except:
  print("Não é possível incluir um novo elemento no conjunto")
try:
  conj_imut.remove('b')
except:
  print("Não é possível excluir um elemento do conjunto")

Veja que após criar o conjunto imutável, o Python não permite incluir ou deletar elementos nesse conjunto.

O conjunto imutável: frozenset({'b', 'e', 'a', 'd', 'c'})
Não é possível incluir um novo elemento no conjunto
Não é possível excluir um elemento do conjunto
  • getattr() – Retorna o valor de um determinado atributo de um objeto.
class Aluno:
  nome  = "Maria Flor"
  idade = 18
  curso = "BSI"
nome  = getattr(Aluno, 'nome')
curso = getattr(Aluno, 'curso')
print(nome, "faz o curso", curso, "da UNIRIO")

O programa fornece a seguinte resposta:

Maria Flor faz o curso BSI da UNIRIO
  • globals() – Usado para atualizar variáveis globais e para retornar informações sobre as variáveis globais. No exemplo mostrado abaixo, temos uma variável global ‘a’ e uma variável local ‘a’ dentro da função teste(). A variável global ‘a’ é alterada dentro da função teste().
a = 5
print("A variável 'a' no início do programa:",a)
def teste():
   globals()['a'] = 25
   a = 30
   print("A variável local 'a' dentro da função teste:",a)
teste()
print("A variável global 'a' depois da função teste:",a)
print("\n", globals())

A saída do programa é:

A variável 'a' no início do programa: 5
A variável local 'a' dentro da função teste: 30
A variável global 'a' depois da função teste: 25

 {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f0ff08e5270>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/home/morganna/Área de Trabalho/Python_220330/testes/teste_funcao.py', '__cached__': None, 'a': 25, 'teste': <function teste at 0x7f0ff094a0e0>}
  • hasattr() – Responde com True se o argumento é um dos atributos do objeto, e responde com False no caso contrário.
class Aluno:
  nome  = "Maria Flor"
  idade = 18
  curso = "BSI"
if hasattr(Aluno, 'nome'):
   print("Existe atributo nome no objeto Aluno")
else:
   print("Não existe atributo nome no objeto Aluno")
if hasattr(Aluno, 'cidade'):
   print("Existe atributo cidade no objeto Aluno")
else:
   print("Não existe atributo cidade no objeto Aluno")

Abaixo a resposta mostrada pelo programa.

Existe atributo nome no objeto Aluno
Não existe atributo cidade no objeto Aluno
  • hash() – Retorna o valor hash de um objeto (se houver um). Explicação: hash é um algoritmo matemático no qual ocorre uma transformação do dado em um número.
print('Hash para 12345:', hash(12345))
print('Hash para 12.345:',hash(12.345))
print('Hash para "Python é 10!":', hash('Python é 10!'))
print('Hash para (1,2,3,4,5):', hash((1,2,3,4,5)))

Abaixo a resposta do programa.

Hash para 12345: 12345
Hash para 12.345: 795515838178725900
Hash para "Python é 10!": 9085620290049123719
Hash para (1,2,3,4,5): -5659871693760987716
  • help() – Invoca o sistema de ajuda embutido.
x = help(print)
print(x)
  • hex() – Converte um número inteiro para uma string hexadecimal.
print("Hexadecimal de 23  é " + hex(23))
print("Hexadecimal de -23 é " + hex(-23))                                               
print("Hexadecimal de 'a' é " + hex(ord('a')))
print("Hexadecimal de 2.3 é " + float.hex(2.3))

O resultado do programa é mostrado abaixo.

Hexadecimal de 23  é 0x17
Hexadecimal de -23 é -0x17
Hexadecimal de 'a' é 0x61
Hexadecimal de 2.3 é 0x1.2666666666666p+1
  • id() – Retorna a identidade de um objeto. Esta identidade é única e constante para o objeto durante a sua existencia.
a = "Python"
print("id(a) =", id(a))
b = "Python"
print("id(b) =", id(b))
if id(a) == id(b):
   print("id(a) = id(b)")
else:
   print("id(a) não é = id(b)")
lista = ["abc", "Python", "123"]
print("id(lista[0]) =", id(lista[0]))
print("id(lista[1]) =", id(lista[1]))
print("id(lista[2]) =", id(lista[2]))
print("id(lista)    =", id(lista))
print("id(21) =", id(21))
print("id(99) =", id(99))

A resposta do programa é mostrada abaixo. Note que as variáveis ‘a’ e ‘b’ são dois nomes para um mesmo valor.

id(a) = 140199966322352
id(b) = 140199966322352
id(a) = id(b)
id(lista[0]) = 140199966311600
id(lista[1]) = 140199966322352
id(lista[2]) = 140199966628912
id(lista)    = 140199968098304
id(21) = 140199967097712
id(99) = 140199967100208
  • input() – Recebe uma entrada na linha de comando e retorna uma string.
nome = input('Entre com o seu nome: ')
print('Olá, ' + nome)
  • int() – Devolve um objeto inteiro construído a partir de um número ou de uma string. Devolve zero se nenhum argumento for fornecido.
a = '12'
b = 6
print('a + b = ', int(a) + b)
c = 12.78
print("c = ", int(c))

A resposta é

a + b =  18
c =  12
  • isinstance() – Retorna True se um objeto é instância de uma determinada classe.
if isinstance(5, int):
   print("5 é um número inteiro")
if isinstance("abc", str):
   print("'abc' é uma string")
class Aluno:
  nome = "Maria"
x = Aluno()
if isinstance(x, Aluno):
   print("x é uma instância da classe Aluno")
  • issubclass() – Retorna True se uma classe é uma subclasse de uma outra classe.
print('bool é uma subclasse de int: ', issubclass(bool, int))
class meuCurso:
  curso = 'BSI'
class meusDados(meuCurso):
  nome = "Maria Flor"
  curso = meuCurso
if issubclass(meusDados, meuCurso):
   print("meusDados é uma subclasse de meuCurso")

A resposta fornecida pelo programa é

bool é uma subclasse de int:  True
meusDados são uma subclasse de meuCurso
  • iter() – Retorna um objeto iterável.
lista = iter([1, "ab", 13, 2.4, False])
for i in range(0, 5):
  print(next(lista))

O resultado do programa é mostrado abaixo.

1
ab
13
2.4
False
  • len() – Devolve o comprimento (o número de itens) de um objeto.
string = "Python é 10!"
lista = [1, "ab", 13, 2.4, False]
conjunto = {1, "teste", "abc"}
print("Tamanho da string = ",   len(string))
print("Tamanho da lista = ",    len(lista))
print("Tamanho do conjunto = ", len(conjunto))

O programa responde:

Tamanho da string =  12
Tamanho da lista =  5
Tamanho do conjunto =  3
  • list() – Cria uma lista.
string = "Python é 10!"
lista = [1, "ab", 13, 2.4, False]
conjunto = {1, "teste", "abc"}
print("De uma string = ",  list(string))
print("De uma lista = ",   list(lista))
print("De um conjunto = ", list(conjunto))

A resposta é:

De uma string =  ['P', 'y', 't', 'h', 'o', 'n', ' ', 'é', ' ', '1', '0', '!']
De uma lista =  [1, 'ab', 13, 2.4, False]
De um conjunto =  [1, 'teste', 'abc']
  • locals() – Retorna informações sobre as variáveis locais.
def teste():
    a = 10
    b = 15
    print("\nDentro da função teste()")
    print(locals())
teste()
c = 30
print("\nNo escopo global")
print(locals())

A resposta é:

Dentro da função teste()
{'a': 10, 'b': 15}

No escopo global
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f86b34ad270>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/home/morganna/Área de Trabalho/testes/teste_funcao.py', '__cached__': None, 'teste': <function teste at 0x7f86b35120e0>, 'c': 30}
  • map() – Aplica uma função em cada item do iterador.
def funcao1(a):
  return len(a)
x = map(funcao1, ('UNIRIO', 'BSI', 'CCET'))
print(list(x))

lista1 = [1, 2, 3]
lista2 = [4, 5, 6]
x = map(lambda a, b: a + b, lista1, lista2)
print(list(x))

def funcao2(a, b):
  return a + b
x = map(funcao2, ('UNIRIO: ', 'BSI: ', 'CCET: '), ('universidade', 'curso', 'centro'))
print(list(x))

lista = [2, 4, 6, 8, 10]
def funcao3(num):
  return num * num
x = map(funcao3, lista)
print(list(x))

Abaixo a resposta do programa.

[6, 3, 4]
[5, 7, 9]
['UNIRIO: universidade', 'BSI: curso', 'CCET: centro']
[4, 16, 36, 64, 100]
  • max() – Devolve o maior item em um iterável ou o maior de dois ou mais argumentos.
x = max("Maria", "João", "Anatália")
print(x)
x = max([2, 78, 101, 4, 31])
print(x)
x = max(3, 7)
print(x)

Abaixo é mostrada a resposta.

Maria
101
7
  • memoryview() – Devolve um objeto de “visão da memória” criado a partir do argumento fornecido.
vetor = bytearray('ABC', 'utf-8')
print('Antes atualização:', vetor)
res = memoryview(vetor)
print(res[1])
print(bytes(res[1:2]))
res[1] = 90
print('Depois da atualização:', vetor)
print(res[1])
print(bytes(res[1:2]))

Resposta do programa é:

Antes atualização: bytearray(b'ABC')
66
b'B'
Depois da atualização: bytearray(b'AZC')
90
b'Z'
  • min() – Devolve o menor item em um iterável ou o menor de dois ou mais argumentos.
x = min("Maria", "João", "Anatália")
print(x)
x = min([2, 78, 101, 4, 31])
print(x)
x = min(3, 7)
print(x)

A saída do programa é:

Anatália
2
3
lista= iter(["UNIRIO", "BSI", "CCET"])
while True:
   item = next(lista, 'fim')
   if item == 'fim':
      print('*** Fim da lista')
      break
   else:
      print(item)

A resposta é mostrada abaixo.

UNIRIO
BSI
CCET
*** Fim da lista
  • object() – Retorna um objeto vazio. Não é possível adicionar propriedades e métodos ao objeto criado.
objeto = object()
print("Tipo do objeto : ", type(objeto))
print("Atributos do objeto : ")
print(dir(objeto))

A saída do programa é:

Tipo do objeto :  <class 'object'>
Atributos do objeto : 
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
  • oct() – Converte um número inteiro para uma string em base octal.
print(oct(12))
print(oct(26))
print(oct(int('32')))

Abaixo a resposta do programa.

0o14
0o32
0o40
  • open() – Abre um arquivo. O exemplo abaixo abre um arquivo para a escrita, escreve no arquivo, fecha o arquivo e depois abre o arquivo para leitura.
arq = open("teste.txt", "w")
arq.write("Primeira linha do arquivo novo\n")
arq.write("Segunda linha do arquivo\n")
arq.write("Fim do arquivo")
arq.close()
arq = open("teste.txt", "r")
print(arq.read())

Abaixo a resposta da execução do programa.

Primeira linha do arquivo novo
Segunda linha do arquivo
Fim do arquivo

A tabela a seguir mostra outros modos de abrir um arquivo.

CaractereSignificado
‘r’Abre para leitura
‘w’Abre para escrita
‘x’Abre o arquivo para escrita, falha se o arquivo já existe
‘a’Abre, no final do arquivo, para escrita
‘b’Abre no modo binário
‘t’Abre no modo texto
‘+’Abre para atualizações (leitura e escrita)
  • ord() – Retorna o código Unicode de um caractere.
print("a =", ord("a"))
print("A =", ord("A"))
print("$ =", ord("$"))
print("# =", ord("#"))
print("@ =", ord("@"))

O programa mostra a resposta abaixo.

a = 97
A = 65
$ = 36
# = 35
@ = 64
  • pow() – Retorna a potência de um número. Se um terceiro número é fornecido, a função retorna o resto da divisão da potência por um número.
x = pow(5, 3)
print("5  ** 3      =", x)
x = pow(5, -3)
print("5  ** -3     =", x)
x = pow(-5, -3)
print("-5 ** -3     =", x)
x = pow(5, 3, 2)
print("(5 ** 3) % 2 =", x)

Abaixo a resposta do programa.

5  ** 3      = 125
5  ** -3     = 0.008
-5 ** -3     = -0.008
(5 ** 3) % 2 = 1
  • print() – Imprime uma mensagem na saída padrão.
print("Python é 10!")
a = "Python é"
b = " 10!"
print(a + b)
x = 10 / 3
print("x = ", x)

A resposta é:

Python é 10!
Python é 10!
x =  3.3333333333333335
  • property() – Cria e retorna um atributo de propriedade. No exemplo abaixo, a propriedade area retorna o valor da área de um retângulo.
class Retangulo(object):
    def __init__(self, largura, altura):
        self.largura = largura
        self.altura  = altura
    def area(self):
        return self.largura * self.altura
    area = property(area)
objeto = Retangulo(4, 7)
print("área =", objeto.area)

A saída do programa é

área = 28
  • range() – Retorna uma sequência de números dado o valor inicial, o valor final e o incremento (por padrão é o valor 1).
print("Números ímpares menores que 20:")
for i in range(1, 21, 2):
  print(i)

Abaixo o resultado da execução do programa.

Números ímpares menores que 20:
1
3
5
7
9
11
13
15
17
19
  • repr() – Retorna uma string contendo uma representação imprimível de um objeto.
print(repr(12))
print(repr(12.45))
print(repr(True))
print(repr((5+7)/3))
class Aluno:
    nome = "Maria Flor"
    def __repr__(self):
        return repr(self.nome)
print(repr(Aluno()))

Abaixo a resposta.

12
12.45
True
4.0
'Maria Flor'
  • reversed() – Retorna um iterador reverso.
print(list(reversed([21, 19, -40, 33, -3])))
print(list(reversed("Python é 10!")))
print(list(reversed(('P', 'y', 't', 'h', 'o', 'n'))))
for i in reversed(["a", "e", "i", "o", "u"]):
  print(i)

O programa mostra como saída:

[-3, 33, -40, 19, 21]
['!', '0', '1', ' ', 'é', ' ', 'n', 'o', 'h', 't', 'y', 'P']
['n', 'o', 'h', 't', 'y', 'P']
u
o
i
e
a
  • round() – Arredonda o valor de um número dado um determinado número de casas decimais. Se o numero de casas decimais não for fornecido, o número é arredondado para o valor inteiro mais próximo.
import math
pi = math.pi
print("pi =", pi)
print("pi =", round(pi, 3))
print("pi =", round(pi, 2))
print("pi =", round(pi, 1))
print("pi =", round(pi))

A resposta é:

pi = 3.141592653589793
pi = 3.142
pi = 3.14
pi = 3.1
pi = 3
a = set()
print("a =", a)
b = set(("UNIRIO", "BSI", "CCET"))
print("b =", b)
def numPar(num):  
   if num % 2 == 0:  
      return num 
pares = filter(numPar,[3, 6, 18, 12, 71, 23, 42])
c = set(pares)
print("c =", c)

A resposta do programa é mostrada abaixo.

a = set()
b = {'CCET', 'BSI', 'UNIRIO'}
c = {18, 12, 42, 6}
  • setattr() – Permite alterar ou incluir um atributo.
class Aluno:  
    nome  = ""  
    curso = ""  
    def __init__(self, nome, curso):  
      self.nome = nome  
      self.curso = curso             
aluno = Aluno("Maria Flor", "Matemática")
print("*** Dados originais")
print("Nome  =", aluno.nome)  
print("Curso =", aluno.curso)
setattr(aluno, 'curso','BSI') 
setattr(aluno, 'email','flor@unirio') 
print("*** Dados modificados")
print("Nome  =", aluno.nome)  
print("Curso =", aluno.curso)
print("Email =", aluno.email)

A saída do programa é:

*** Dados originais
Nome  = Maria Flor
Curso = Matemática
*** Dados modificados
Nome  = Maria Flor
Curso = BSI
Email = flor@unirio
  • slice() – Retorna um objeto fatiado. A função permite especificar o início e o fim do fatiamento de uma sequência (string, tupla, lista, range ou bytes). Note que o índice final da função não entra no fatiamento.
tupla = ("a", "b", "c", "d", "e", "f", "g", "h")
print("Tupla =", tupla)
print("Tupla(3)     =", tupla[slice(3)])
print("Tupla(2,6)   =", tupla[slice(2,6)])
print("Tupla(1,7,2) =", tupla[slice(1,7,2)])
print()
string = 'Python é 10!'
print("String =", string)
print("String(3)     =", string[slice(3)])
print("String(3,8)   =", string[slice(3,8)])
print("String(1,8,2) =", string[slice(1,8,2)])
print()
lista = [1, 'ab', 64, 'teste', 2.3, 12, 'BSI']
print("Lista = ", lista)
print("Lista(2)     =", lista[slice(2)])
print("Lista(1,4)   =", lista[slice(1,4)])
print("Lista(2,6,2) =", lista[slice(2,6,2)])
print()
r = range(10)
print("Range = ", r)
print("Range(3)     =", r[slice(3)])
print("Range(3,8)   =", r[slice(3,8)])
print("Range(2,6,2) =", r[slice(2,6,2)])
print()
string = 'Python é 10!'
bytes = bytes(string, 'utf-8')  
print("Bytes =", bytes)
print("Bytes(3)     =", bytes[slice(3)])
print("Bytes(3,8)   =", bytes[slice(3,8)])
print("Bytes(1,8,2) =", bytes[slice(1,8,2)])

A resposta do programa é mostrada abaixo.

Tupla = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
Tupla(3)     = ('a', 'b', 'c')
Tupla(2,6)   = ('c', 'd', 'e', 'f')
Tupla(1,7,2) = ('b', 'd', 'f')

String = Python é 10!
String(3)     = Pyt
String(3,8)   = hon é
String(1,8,2) = yhné

Lista =  [1, 'ab', 64, 'teste', 2.3, 12, 'BSI']
Lista(2)     = [1, 'ab']
Lista(1,4)   = ['ab', 64, 'teste']
Lista(2,6,2) = [64, 2.3]

Range =  range(0, 10)
Range(3)     = range(0, 3)
Range(3,8)   = range(3, 8)
Range(2,6,2) = range(2, 6, 2)

Bytes = b'Python \xc3\xa9 10!'
Bytes(3)     = b'Pyt'
Bytes(3,8)   = b'hon \xc3'
Bytes(1,8,2) = b'yhn\xc3'
  • sorted() – Retorna uma lista ordenada.
tupla = ("b", "g", "a", "d", "f", "c", "h", "e")
print("Tupla ordenada =", sorted(tupla))
print("Tupla reversa  =", sorted(tupla, reverse=True))

Abaixo a resposta do programa.

Tupla ordenada = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
Tupla reversa  = ['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
  • staticmethod() – Transforma um método de classe em um método estático. Um método estático não requer uma criação de instância de classe e apenas lida com os parâmetros. O exemplo abaixo mostra duas formas de fazer essa transformação: usando a função staticmethod() e usando o decorador @staticmethod.
class Calculadora:
  def soma_numeros(num1, num2):
    return num1 + num2
  @staticmethod
  def multiplica_numeros(num1, num2):
      return num1 * num2
Calculadora.soma_numeros = staticmethod(Calculadora.soma_numeros)
print('Soma =', Calculadora.soma_numeros(5, 31))
print("Multiplicação =", Calculadora.multiplica_numeros(4, 8))

A saída do programa é:

Soma = 36
Multiplicação = 32
  • str() – Converte um determinado valor em uma string.
a = str(3.5 + 2.4)
b = str(4.5)
print("a =", a, ", type =", type(a))
print("b =", b, ", type =", type(b))

Abaixo a resposta do programa.

a = 5.9 , type = <class 'str'>
b = 4.5 , type = <class 'str'>
  • sum() – soma todos os itens de um iterável. Se um valor é fornecido, assume que a soma tem inicialmente este valor.
tupla = (1, 2, 3, 4, 5)
print("Tupla =", tupla)
print("Soma tupla =", sum(tupla))
print("Soma tupla + 10 =", sum(tupla, 10))

A resposta é:

Tupla = (1, 2, 3, 4, 5)
Soma tupla = 15
Soma tupla + 10 = 25
  • super() – Retorna um objeto que representa a classe pai.
class Pai:
  def __init__(self, texto):
    self.mensagem = texto
  def mostraMensagem(self):
    print(self.mensagem)
class Filho(Pai):
  def __init__(self, texto):
    super().__init__(texto)
objeto = Filho("Python é 10!")
objeto.mostraMensagem()

O programa apresenta a seguinte resposta:

Python é 10!
  • tuple() – Retorna uma tupla.
string = "Python"
print("Tupla a partir de uma string =", tuple(string))
lista = [1, 2, 3]
print("Tupla com 3 itens =", tuple(lista))
num = 21.5
dicionario = { 'nome' : 'Maria Flor', 'Curso' : 'BSI' } 
print("Tupla a partir de um dicionário =", tuple(dicionario))

A resposta do programa é:

string = "Python"
print("Tupla a partir de uma string =", tuple(string))
lista = [1, 2, 3]
print("Tupla com 3 itens =", tuple(lista))
dicionario = { 'nome' : 'Maria Flor', 'Curso' : 'BSI' } 
print("Tupla a partir de um dicionário =", tuple(dicionario))
  • type() – Retorna o tipo do objeto.
string = "Python"
print("Tipo =", type(string))
lista = [1, 2, 3]
print("Tipo =", type(lista))
tupla = (1, 2, 3)
print("Tipo =", type(tupla))
conjunto = {1, 2, 3}
print("Tipo =", type(conjunto))
num = 21
print("Tipo =", type(num))
num = 21.5
print("Tipo =", type(num))
dicionario = { 'nome' : 'Maria Flor', 'Curso' : 'BSI' } 
print("Tipo =", type(dicionario))

A saída do programa é:

Tipo = <class 'str'>
Tipo = <class 'list'>
Tipo = <class 'tuple'>
Tipo = <class 'set'>
Tipo = <class 'int'>
Tipo = <class 'float'>
Tipo = <class 'dict'>
  • vars() – Retorna o atributo dict de um objeto. O atributo dict é um dicionário que contém os atributos alteráveis ​​do objeto.
class Aluno:
  nome  = 'Maria Flor'
  Curso = 'BSI'
  idade = 18
print(vars(Aluno))

O programa apresenta a seguinte saída:

{'__module__': '__main__', 'nome': 'Maria Flor', 'Curso': 'BSI', 'idade': 18, '__dict__': <attribute '__dict__' of 'Aluno' objects>, '__weakref__': <attribute '__weakref__' of 'Aluno' objects>, '__doc__': None}
  • zip() – Retorna um iterador de tuplas onde o primeiro item do iterador corresponde aos primeiros itens das tuplas, o segundo item corresponde aos segundos itens das tuplas, e assim por diante. Se os iteradores ​​tiverem comprimentos diferentes, o iterador com menos itens decide o comprimento do novo iterador.
a = ("UNIRIO", "BSI", "CCET")
b = ("univesidade", "curso", "centro")
c = (1, 2, 3, 4, 5)
print(list(zip(a,b,c)))

Abaixo a resposta do programa.

[('UNIRIO', 'univesidade', 1), ('BSI', 'curso', 2), ('CCET', 'centro', 3)]
  • __import__() – É chamada pela instrução de importação.
num = __import__('math')
print("pi = ", num.pi)

A resposta é:

pi =  3.141592653589793