Você está na página 1de 8

Aula 13 – Funções intrínsecas (built in) e Módulos

MAC 110/115 – Python - Marcilio

Aula 13 - Funções intrínsecas (built in) e Módulos


Quando é necessário o uso de uma função, há basicamente 3 maneiras de fazê-lo:
 simplesmente usar se ela for uma função intrínseca do Python
 importar a função do módulo ao qual ela pertence (comando import)
 construir uma nova função (comando def)

As funções intrínsecas (built in)

Já usamos várias delas anteriormente. A tabela completa é a seguinte:

Built-in Functions
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()
delattr() hash() memoryview() set()

Vejamos algumas:

abs()
Retorna o valor absoluto. O argumento pode ser inteiro, float ou complexo.

bool()
Retorna o valor lógico associado ao argumento. O argumento pode ser inteiro, float, complexo, lógico, lista,
string. Basicamente valores diferentes de zero são True. Zero, None, [] (lista vazia) , '''' ou '' (string vazia) são
False.

chr()
Retorna o string representando o caractere Unicode correspondente ao argumento que é um inteiro. Exemplo,
chr(65) retorna 'A'.

complex()
Retorna o complexo correspondente ao argumento. Exemplos:
complex(1, 1) retorna 1+1j
complex(-5.2) retorna -5.2+0j
complex() retorna 0j
complex('-1+5j') retorna -1+5j

float()
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

Converte uma string para um número em ponto flutuante. Exemplos:


float("-1.23") retorna -1.23
float("-3.56756E-35") retorna -3.56756e-35
float("-3.4e2") retorna -340.0
float("23.45a") retorna erro – caractere inválido no string
float("1,2") retorna erro – caractere inválido no string

input()
Retorna a string que foi digitada.

int()
Converte uma string em um número inteiro. Exemplos:
int("123") retorna 123
int("-55234") retorna -55234
int("1001", 2) retorna 9. O segundo parâmetro é a base numérica.

len()
Retorna o tamanho (número de itens) de um objeto. O argumento pode ser string, tupla, lista ou range.
Exemplos:
len("string exemplo") retorna 14 - quantidade de caracteres.
len("str ", -5, 42, True) retorna 4 - quantidade de elementos da tupla.
len(["string1", -3 , "string2") retorna 3 - quantidade de elementos da lista.
len(range(3, 10)) retorna 7 - quantidade de elementos do intervalo.

max()
Retorna o valor máximo de uma lista de valores. Exemplos:

max(1, 2, 3) retorna 3
max("abcd", "abc", "aeiou", "ab") retorna "aeiou"

min()
Retorna o valor mínimo de uma lista de valores. Exemplos:
min(1, 2, 3)) retorna 1
min("abcd", "abc", "aeiou", "ab") retorna "ab"

ord()
Retorna o valor Unicode do caractere na string. Exemplo, chr('A') retorna 65.

pow()
Retorna o valor do primeiro argumento elevado ao segundo. Os argumentos podem ser inteiros ou float.
Exemplos:
pow(2.0, 3) retorna 8.0
pow(3.2, -2.3) retorna 0.06888981997853828

print(<objetos>, sep=' ', end='\n')


Imprime um conjunto de objetos. Usa dois parâmetros, o separador (default – 1 espaço) e o caractere final
(default = pula linha).

range()
Retorna uma lista implícita de valores pertencentes a um intervalo.

round()
Retorna o valor mais próximo. Se não tiver o segundo parâmetro, retorna o inteiro mais próximo. O segundo
parâmetro dá a quantidade de dígitos após o ponto decimal a considerar.
round(1.2) retorna 1

Aula 13 – Funções intrínsecas (built in) e Módulos


MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

round(1.5) retorna 2
round(1.7) retorna 2
round(1.22, 1) retorna 1.2
round(1.55, 1) retorna 1.6
round(1.77, 1) retorna 1.8
round(2.675, 2) retorna 2.67 – Não é um bug, embora o valor esperado fosse 2.68. O problema é que as
frações decimais podem ser armazenadas internamente por um valor aproximado. Neste caso, por um valor
menor que 2.675.

Módulos

Um módulo é qualquer arquivo com extensão .py contendo a definição de funções, comandos ou classes.
Esse arquivo pode ser importado (comando import) por outro programa e qualquer função definida dentro
dele pode ser usada pelo programa que o importou.

Considere o arquivo equ.2.grau.py a seguir, que contém a definição da função que calcula as raízes de uma
equação do 2. grau:

import math

def RaizesEquacaoSegundoGrau(a, b, c):


'''Raizes de equação do segundo grau.'''
if a == 0 and b == 0: return -3, None, None
if a == 0: return -2, -c / b, None
delta = b * b - 4 * a * c

if delta < 0: return -1, None, None


x1 = (-b + math.sqrt(delta)) / (2 * a)
x2 = (-b - math.sqrt(delta)) / (2 * a)
return 0, x1, x2

Considere agora o programa abaixo a seguir, que importa o módulo equ_2_grau o qual contém uma função
que calcula as raízes de algumas equações:

import equ_2_grau

def principal():

# exemplo de chamada
print("Raizes:", equ_2_grau.RaizesEquacaoSegundoGrau(1, -3, 2))
print("Raizes:", equ_2_grau.RaizesEquacaoSegundoGrau(1, 1, 1))
print("Raizes:", equ_2_grau.RaizesEquacaoSegundoGrau(0, 0, 1))

principal()

Note agora que esse último importou o primeiro para poder usar a função nele definida.
Note também que o primeiro importou o módulo math, um módulo existente, para poder usar a função sqrt.

Estamos considerando nos exemplos acima que ambos os arquivos estão no mesmo diretório. Caso não
estejam teríamos que especificar o caminho completo do arquivo a importar.

Qualquer arquivo com extensão .py pode ser um módulo. A maneira de usar uma função de um módulo
importado é sempre:

<nome do modulo>.<nome da função>(<argumentos>)

Aula 13 – Funções intrínsecas (built in) e Módulos


MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

Podemos também importar seletivamente apenas algumas funções de um módulo. Neste caso usamos o
comando:

from <nome do módulo> import <f1>, <f2>, ...

Os módulos padrões do Python

O Python possui uma grande quantidade de módulos padrões que podem ser importados pelos programas. No
link https://docs.python.org/3/py-modindex.html há uma listagem completa de todos os módulos
disponíveis e suas funcionalidades.

Vamos ver abaixo os módulos math e random que serão bastante úteis em nossos próximos exemplos.

O módulo math

Já usamos anteriormente a função sqrt do módulo math. Esse módulo possui várias outras funções pré-
definidas cujo objetivo é facilitar a programação de cálculos matemáticos. O comando dir(<módulo> )
devolve uma lista com todas as funções deste módulo.

>>> import math


>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2',
'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod',
'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10',
'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Alguns exemplos:

import math

def principal():

# exemplo de chamada
print(math.sin(math.pi / 2))
print(math.cos(math.pi / 4))
print(math.acos(1))
print(math.atan(1))
print(math.log(10))
print(math.log2(10))

principal()

Agora um exemplo importando apenas alguns elementos de math. Note que nesse caso não é mais necessário
usar o nome do módulo na frente da função:

from math import sin, cos, pi

def exemplo_sin_cos():

# exemplo de chamada
print(sin(pi / 2))
print(cos(pi / 4))

exemplo_sin_cos()

Aula 13 – Funções intrínsecas (built in) e Módulos


MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

Consulte https://docs.python.org/3/library/math.html para conhecer cada uma das funções contidas no módulo
math. Abaixo as principais:

math.fabs(x) – Retorna o valor absolto de x


math.factorial(x) – Retorna o factorial de x
x
math.exp(x) – Retorna e
math.log(x[, base]) – Com um argumento, retorna o logaritmo de x na base e.
– Com dois, retorna o logaritmo de x numa determinada base.
math.log2(x) – Retorna o logaritmo de x na base 2
math.log10(x) – Idem na base 10
math.pow(x, y) – Retorna x**y
math.sqrt(x) – Retorna a raiz quadrada de x
math.acos(x) – Retorna arco-cosseno de x
math.asin(x) – Retorna arco-seno de x
math.atan(x) – Retorna arco-tangente de x
math.cos(x) – Retorna cosseno de x
math.tan(x) – Retorna seno de x
math.degrees(x) – Converte de radianos para graus
math.radians(x) – vice-versa
math.pi – a constante pi
math.e – a constante e

O módulo random

Contém funções que geram números aleatórios. Na verdade o correto é dizer que geram números pseudo-
aleatórios, pois são baseados em um algoritmo determinístico — reproduzível e previsível. A partir de um
valor chamado de semente, os valores gerados são os mesmos. A cada vez que você executar o seu programa,
o valor da semente é provavelmente diferente, significando que apesar dos números aleatórios estarem sendo
criados usando algoritmos determinísticos, você vai obter um comportamento aleatório cada vez que você
executar. O valor da semente pode também ser alterado pelo programa.

A função random() retorna um número em ponto flutuante no intervalo [0.0, 1.0) – “intervalo fechado à
esquerda” e “intervalo aberto à direita”. Em outras palavras, 0.0 é possível, mas todos os números retornados
serão estritamente menores que 1.0. É possível transformá-lo por exemplo para um número no intervalo [0.0,
5.0) simplesmente multiplicando por 5. Ou ainda no intervalo [a, b) pela expressão (b – a) . x + a.

A função randrange gera um inteiro no intervalo definido pelo menor e maior argumento, usando a mesma
semântica do range — ou seja, o valor inicial é incluído, mas o final é excluído. Todos os valores tem a
mesma probabilidade de ocorrência (ou seja, os resultados são uniformemente distribuídos).

A função uniform(a, b) retorna um número em ponto flutuante entre a e b. O b pode ou não estar incluso.
Depende do arredondamento da expressão a + (b-a) * random().

A função seed(a) inicia a geração da sequência randômica. Fornece o ponto inicial desta sequência. Se o
parâmetro a for omitido, é usado o relógio corrente do sistema. Quando não é usada essa função para iniciar o
processo, o módulo usa um valor padrão.

import random

def exemplo_random():

# inicia o processo de geração da sequência


random.seed(123456789)
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

# exemplos de uso de random


print(random.random()) # [0,1)
print(5 * random.random()) # [0.0, 5.0)
print((20 * random.random() - 10)) # [-10.0, 10.0)

# exemplos de uso de randrange


print(random.randrange(7)) # inteiros 0 a 6 (jogo de dados)
print(random.randrange(1, 10)) # inteiros 1 a 9
print(random.randrange(0, 11, 2)) # inteiros 0,2,4,6,8,10

# exemplos de uso de uniform


print(random.uniform(0.0, 1.0)) # [0.0, 1.0]
print(random.uniform(-3.3, 10.0)) # [3.3, 10.0]

exemplo_random()

Se o programa acima for executado 2 vezes, os valores randômicos gerados serão exatamente os mesmos.
Se for alterado o parâmetro da função seed, por exemplo: seed(9123456789), os valores gerados serão
diferentes.

Outro exemplos:

# Função que simula uma jogada de dados – gera valores de 1 a 6


def JogadaDeDados():
return random.randrange(1, 7)

# Função que simula uma jogada de moeda – Cara = 0 e Coroa = 1


def CaraOuCoroa():
# supondo Cara = 0, Coroa = 1
return random.randrange(2)

Consulte https://docs.python.org/3/library/random.html para mais detalhes. Existem muitas outras funções


dentro desse módulo.

O módulo string

Contém funções que mexem com cadeias de caracteres (strings).

Consulte: https://docs.python.org/3/library/string.html

O módulo time

Contém funções que consultam as várias temporizações.

time() : devolve o valor corrente do relógio em segundos referentes a uma base de referência (e.g.
01/01/1970).

Portanto ter o tempo decorrido entre dois pontos do programa:


a = time.time()
# comandos
...
b = time.time() – a

sleep(n) : deixa o programa suspenso por n segundos.

Aula 13 – Funções intrínsecas (built in) e Módulos


MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

clock() : devolve o tempo de CPU consumido até o momento pelo programa.

process_time() : devolve o tempo de CPU mais o tempo do sistema consumido até o momento pelo
sistema.

Muitas outras funções existem nesse módulo.

Consulte: https://docs.python.org/3/library/time.html

O módulo statistics

Contém funções estatísticas usuais (média, mediana, variância, desvio padrão, etc.)

Consulte: https://docs.python.org/3/library/statiscs.html

Pacotes (Packages)

Quando um módulo fica muito grande, com muitas funções definidas dentro dele, é conveniente classificar
melhor essas funções, dividindo-as em pastas, mas mantendo a estrutura. A essa nova estrutura, damos o
nome de Pacote. Exemplo – suponha a estrutura abaixo:

util/
__init__.py
busca.py [sequencial(), binaria(), hashing()]
classifica.py [insercao(), quick(), bubble]
tipo_1/
__init__.py
tipoint.py [t1, t2]
tipostring.py [s1, s2, s3]
tipo_2/
__init__.py
tipolista.py [a1, a2, a3]
tipotupla.py [b1, b2]

Podemos então usar os seguintes comandos import:

import util
import.busca
import util.tip_1.tipoint
from util.busca import binaria
from util.tipo_1.tipoint ikmport t1

Note que com essa estrutura a cada nova pasta temos que ter um arquivo __init__.py que em geral é um
arquivo vazio.

Exercícios:

P13.1) Calcular os valores da função senx*cosx para x = 0, 0.001, 0.002, ..., 2π

P13.2) Calcular o valor máximo e mínimo da função sen x - cos x, no intervalo [0, 2π]. Usar passo de 0.001

P13.3) Dado x >= 0, determinar para qual k, o valor de e x/k! fica menor que 10-5.

P13.4) Construa uma tabela para x = 0, 0.01, 0.02, ..., 0,10 com o valor de x 1, x2, ..., x10 .

Aula 13 – Funções intrínsecas (built in) e Módulos


MAC 110/115 – Python - Marcilio
Aula 13 – Funções intrínsecas (built in) e Módulos
MAC 110/115 – Python - Marcilio

P13.5) Dado N, simule a jogada de um dado (faces 1 a 6) N vezes e calcule quantas vezes cada face ocorreu.

P13.6) Dados i e j (1 <= i, j <= 6), simule a jogada de 2 dados 1000 vezes e diga quantas vezes ocorreu o par
i, j de faces.

P13.7) Dado n inteiro e x real, calcular o valor da soma 1 + x + x2 + x3 + ... + xn . Resolver sem usar a
fórmula de soma de Progressão Geométrica ( Sm = (a1 * (qm 1)) / (q -1) ) e sem usar a
função pow.

Aula 13 – Funções intrínsecas (built in) e Módulos


MAC 110/115 – Python - Marcilio

Você também pode gostar