Desbravando Python
Desbravando Python
abs(x)¶
Link: https://docs.python.org/3/library/functions.html#abs
Essa função retorna um valor absoluto de um número. Ele aceita como argumento números inteiros
ou de ponto flutuante. Mas se o valor do argumento for um número complexo, sua magnitude vai
ser retornada.
In [5]:
# Números inteiros
abs(2)
Out[5]:
2
In [6]:
# Números do tipo ponto flutuante
abs(3.1416)
Out[6]:
3.1416
In [10]:
# Números complexos
abs(2j)
Out[10]:
2.0
all(iterable)¶
Link: https://docs.python.org/3/library/functions.html#all Ele retorna True se todos os elementos
de um iterável forem verdadeiros, ou se ele estiver vazio. É equivalente a isso:
In [12]:
def all(iterable):
for element in iterable:
if not element:
return False
return True
Out[17]:
True
In [25]:
# Criando uma lista vazia
lista_vazia = []
all(lista_vazia)
Out[25]:
True
Como pode ver, valores que em operações lógicas, retornam True. No caso de uma lista vazia,
sendo vazia, não tem valores que podem remeter a algum valor falso. Agora no próximo caso é
diferente:
In [26]:
# Criando lista com valores que em operações lógicas retorna sempre falso
lista = [None, 0, '']
all(lista)
Out[26]:
False
Out[35]:
False
Como pode ver, para retornar verdadeiro todos os valores precisam remetar a True em operações
lógicas.
any(iterable)¶
Link: https://docs.python.org/3/library/functions.html#any
Jà no caso dessa função, se existir algum valor que em operações lógicas retornam verdadeiro, o seu
retorno será também verdadeiro. Ele funcionaria dessa forma:
In [37]:
def any(iterable):
for element in iterable:
if element:
return True
return False
Segue um exemplo:
In [39]:
# Criando uma lista
lista = [1, 2, 3]
any(lista)
Out[39]:
True
In [41]:
# Criando uma lista vazia
lista = []
any(lista)
Out[41]:
False
Como pode ver, como não existe qualquer valor que retorne True, ele irá retornar False. Agora
se existir pelo menos um valor?
In [43]:
# Criando lista
lista = [0, None, False, '', 1]
any(lista)
Out[43]:
True
Temos o valor 1 que retorna True, então a função também vai retornar verdadeiro.
ascii(object)¶
Link: https://docs.python.org/3/library/functions.html#ascii
Como a função repr() que vamos explicar mais a frente, ele retorna um string que contêm uma
representação impressa de um objeto. Mas pode ocorrer de retornar caracteres "não-ASCII"
também.
In [46]:
ascii(str)
Out[46]:
"<class 'str'>"
bin(x)¶
Link: https://docs.python.org/3/library/functions.html#bin
Converte um número inteiro para um string binário. Se x não for um objeto do tipo inteiro, ele deve
implementar o método __index__() para retornar um inteiro.
In [48]:
bin(2)
Out[48]:
'0b10'
In [56]:
class NonInteger(object):
def __index__(self):
return 2
bin(NonInteger())
Out[56]:
'0b10'
class bool(x)¶
Link: https://docs.python.org/3/library/functions.html#bool
Retorna um valor booleano, ou seja um True ou False. O valor de x será convertido para o
procedimento de teste padrão de veracidade, ou melhor, efetuar uma verificação lógica da mesma.
Se x é falso ou for omitido, ele retornará False, caso contrário retornará True.
In [64]:
# Valores que retornam True
var1 = 10
var2 = 'ABC'
var3 = 10.123
print("bool() de var1: ", bool(var1))
print("bool() de var2: ", bool(var2))
print("bool() de var3: ", bool(var3))
In [66]:
# Valores que retornam False
var1 = None
var2 = 0
var3 = ''
var4 = []
O bool() é uma subclasse de int. Nós vamos explicar melhor na seção de Tipos numéricos,
então ignore isso por enquando, mas lembre-se que ela não pode ser estendida:
In [58]:
class NotWorkBoolSubClass(bool):
pass
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-58-b7e68adf59a1> in <module>()
----> 1 class NotWorkBoolSubClass(bool):
2 pass
Out[68]:
bytearray(b'\x01\x02\x03')
Parâmetros variados e opcionais podem ser usados para inicializar o array de diferentes maneiras:
1 - Se for um string, você deve declarar sua codificação. bytearray() deve converter sua
string para bytes usando str.encode()
In [71]:
bytearray("Conteudo a ser convertido")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-71-697e34fada0a> in <module>()
----> 1 bytearray("Conteudo a ser convertido")
In [73]:
bytearray("Conteudo a ser convertido", "utf-8")
Out[73]:
bytearray(b'Conteudo a ser convertido')
2 - Se for um inteiro, o array deve conter o tamanho do número e ser inicializado com byte
nulo.
In [81]:
var1 = bytearray(2)
var2 = bytearray(4)
print(var1)
print(var2)
bytearray(b'\x00\x00')
bytearray(b'\x00\x00\x00\x00')
Out[87]:
bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t')
4 - Se for um iterável, ele deve ser um iterável de inteiros no intervalo e 0 <= x < 256, que são
usados como conteúdos iniciais de um array
In [89]:
values = bytearray([3000, 4000, 5000])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-89-c18c149f2bad> in <module>()
----> 1 values = bytearray([3000, 4000, 5000])
ValueError: byte must be in range(0, 256)
print(result)
print(len(result))
bytearray(b'')
0
Out[95]:
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Out[98]:
0
In [100]:
foo = bytes(5)
foo.pop()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-100-64564ad0bf45> in <module>()
1 foo = bytes(5)
----> 2 foo.pop()
In [103]:
foo = bytes(5)
foo[2:]
Out[103]:
b'\x00\x00\x00'
callable(object)¶
Link: https://docs.python.org/3/library/functions.html#callable
Ele retorna True se o argumento aparenta ser callable, e é false se não for. Mas é bom lembrar que,
se ele retornar verdadeiro, é possível que a chamada desse objeto falhe, mas se ele for falso,
chamando o objeto nunca poderá ser bem sucedido. Note que classes que são callable é quando elas
possuem o método __call__().
In [105]:
callable(str)
Out[105]:
True
In [107]:
callable(2)
Out[107]:
False
chr(i)¶
Link: https://docs.python.org/3/library/functions.html#chr
Retorna uma representação em string de um caractere a partir do código Unicode, que é o inteiro i.
Segue um exemplo:
In [110]:
print(chr(97))
print(chr(8364))
a
€
classmethod(function)¶
Link: https://docs.python.org/3/library/functions.html#classmethod
Ele cria um método de classe. Esse método de classe recebe implicitamente a classe como primeiro
argumento, assim como um método de instância recebe a instância pela palavra-chave self. Para
declarar um método de classe faça da seguinte forma:
In [3]:
class C:
@classmethod
def f(cls, arg1, arg2, **kwargs):
pass
O classmethod é um decorador, então pode ser usado para outros métodos que deseja. Ele pode ser
chamado através da classe direito, ou pela instância. Segue um exemplo:
In [11]:
# Criando a classe C
class C:
@classmethod
def f(cls, message):
print("Funcao f() sendo executada: {0}".format(message))
Observação: Métodos de classe são diferentes dos métodos estáticos do C++ ou Java. Se deseja
procurar esse tipo de método veja staticmethod() nesse post.
# Cria um objeto code object para ser executado pelo exec futuramente
source = compile(fonte, 'foo.py', 'exec')
O argumento filename deve ser o arquivo que deve conter o código a ser lido. Jà o argumento mode
especifica que tipo de código deve ser compilado, ele pode ser exec se a fonte consiste em uma
sequência de declarações, eval que consistem em uma expressão simples ou single se consistema
em uma simples declaração interativa.
Segue um exemplo:
In [12]:
source = compile("var = 3\nprint('Valor e: {0}'.format(var))", 'modulefoo',
'exec')
exec(source)
Valor e: 3
Como vimos, criamos um objeto que contém o código python, e definimos um exemplo de módulo
chamado de modulefoo. Esse nosso módulo representa um arquivo, mas ele fica na memória para
ser executado pelo exec, como especificamos na função compile. Esse tipo de função é bem vindo
em situações que precisa de um script customizado, como em metaprogramação.
complex([real[, imag]])¶
Link: https://docs.python.org/3/library/functions.html#complex
Retorna um número complexo com o valor real mais imag*1j ou converte uma string ou um número
para número complexo. Se o primeiro parâmetro for um string, ele irá ser interpretado como um
número complexo e a função deve ser chamada sem um segundo parâmetro. Já o segundo
parâmetro, não pode ser uma string, então fique atento a isso.
Cada argumento pode ser qualquer tipo numérico (incluindo o próprio complexo). Se o parâmetro
imag for omitido, o padrão é zero e o construtor serve uma conversão numérica do tipo int e float.
Se ambos os argumentos são omitidos, ele retorna 0j.
In [20]:
# Inserindo um número inteiro, sem imag
complex(2)
Out[20]:
(2+0j)
In [21]:
# Inserindo uma string que tem formato de
# um número complexo
complex('1+2j')
Out[21]:
(1+2j)
In [22]:
# Criando número complexo passando o valor
# e o imag
complex(4, 2)
Out[22]:
(4+2j)
In [24]:
# Criando número complexo sem valor
complex()
Out[24]:
0j
delattr(object, name)¶
Link: https://docs.python.org/3/library/functions.html#delattr
Remove um atributo de um objeto. Faz o contrário do setattr(), que insere atributos em um objeto. O
primeiro parâmetro é o objeto instanciado, e o segundo é uma string que representa o nome de um
dos atributos que a possui.
The string must be the name of one of the object’s attributes. The function deletes the named
attribute, provided the object allows it. For example, delattr(x, 'foobar') is equivalent to del x.foobar.
In [30]:
class ObjectFoo(object):
def __init__(self, *args, **kwargs):
self.attr1 = 'attr_foo'
self.attr2 = 'attr_bar'
def test(self):
print("Foo bar")
foo = ObjectFoo()
print("Atributo foo.attr1: ", foo.attr1)
delattr(foo, 'attr1')
print("Atributo foo.attr1: ", foo.attr1)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-30-481db05efb93> in <module>()
11
12 delattr(foo, 'attr1')
---> 13 print("Atributo foo.attr1: ", foo.attr1)
In [32]:
class ObjectFoo(object):
def __init__(self, *args, **kwargs):
self.attr1 = 'attr_foo'
self.attr2 = 'attr_bar'
def test(self):
print("Foo bar")
foo = ObjectFoo()
print("Atributo foo.attr1: ", foo.attr1)
del foo.attr1
print("Atributo foo.attr1: ", foo.attr1)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-32-ca6ae27f44ba> in <module>()
11
12 del foo.attr1
---> 13 print("Atributo foo.attr1: ", foo.attr1)
class dict(**kwarg)¶
Out[36]:
{'bar': 2, 'foo': 1}
In [37]:
# Criando dicionario a partir de outro e estendendo-o
dict1 = dict(foo=1, bar=2)
other_dict = dict(dict1, key_1="other")
other_dict
Out[37]:
{'bar': 2, 'foo': 1, 'key_1': 'other'}
In [45]:
# Criando um novo dicionário a partir de uma lista
lista = [("foo", 1), ("bar", 1), ("foobar", 1)]
new_dict = dict(lista, other_key="value")
new_dict
Out[45]:
{'bar': 1, 'foo': 1, 'foobar': 1, 'other_key': 'value'}
dir([object])¶
Link: https://docs.python.org/3/library/functions.html#dir
Sem argumento ele lista os nomes no escopo local.
In [47]:
dir()
Out[47]:
['In',
'ObjectFoo',
'Out',
'_',
'_13',
'_14',
'_15',
'_16',
'_17',
'_18',
'_19',
'_20',
'_21',
'_22',
'_23',
'_24',
'_3',
'_34',
'_36',
'_37',
'_4',
'_44',
'_45',
'_46',
'_5',
'__',
'___',
'__builtin__',
'__builtins__',
'__doc__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'_dh',
'_i',
'_i1',
'_i10',
'_i11',
'_i12',
'_i13',
'_i14',
'_i15',
'_i16',
'_i17',
'_i18',
'_i19',
'_i2',
'_i20',
'_i21',
'_i22',
'_i23',
'_i24',
'_i25',
'_i26',
'_i27',
'_i28',
'_i29',
'_i3',
'_i30',
'_i31',
'_i32',
'_i33',
'_i34',
'_i35',
'_i36',
'_i37',
'_i38',
'_i39',
'_i4',
'_i40',
'_i41',
'_i42',
'_i43',
'_i44',
'_i45',
'_i46',
'_i47',
'_i5',
'_i6',
'_i7',
'_i8',
'_i9',
'_ih',
'_ii',
'_iii',
'_oh',
'_sh',
'dict1',
'exit',
'fonte',
'foo',
'get_ipython',
'lista',
'new_dict',
'other_dict',
'quit',
'source',
'var']
Como pode ver, alguns objetos e classes que criamos nesse post, ele ficou disponível no escopo
local. Agora quando passa um objeto como argumento, ele lista os atributos disponíveis do mesmo.
In [49]:
instance = ObjectFoo()
dir(instance)
Out[49]:
['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'attr1',
'attr2',
'test']
Se o objeto tem um método chamado __dir__(), esse método deve ser chamado e deve retornar
uma lista de atributos. Isto habilita os objetos de implementarem as funções customizadas de
__getattr__() ou __getattribute__(), para ser a forma da função dir() reportar
esses atributos.
Se o objeto não prover __dir__(), a função tenta fazer o melhor para coletar informações sobre
o objeto passado pelo atributo __dict__, se definido, e do tipo do objeto. A lista resultando não é
necessariamente completo, e pode ser impreciso quando ele tem o __getattr__() customizado.
O mecanismo padrão do dir() pode ser diferente com variados tipos de objetos, sendo que mais
uma vez as tentativas de serem dados relevantes do que as mais completas. Assim:
• Se o objeto é um objeto de um módulo, a lista vai conter os nomes dos atributos do módulo;
• Se o objeto é um type ou objeto de classe, a lista vai conter os nomes dos seus atributos, e
recursivamente os atributos das suas classes base;
• Caso contrário, as listas vão conter os nomes dos atributos do objeto, da sua classe e de
forma recurso, vindo das classes base.
class dict(**kwarg)¶
Out[36]:
{'bar': 2, 'foo': 1}
In [37]:
# Criando dicionario a partir de outro e estendendo-o
dict1 = dict(foo=1, bar=2)
other_dict = dict(dict1, key_1="other")
other_dict
Out[37]:
{'bar': 2, 'foo': 1, 'key_1': 'other'}
In [45]:
# Criando um novo dicionário a partir de uma lista
lista = [("foo", 1), ("bar", 1), ("foobar", 1)]
new_dict = dict(lista, other_key="value")
new_dict
Out[45]:
{'bar': 1, 'foo': 1, 'foobar': 1, 'other_key': 'value'}
dir([object])¶
Link: https://docs.python.org/3/library/functions.html#dir
Sem argumento ele lista os nomes no escopo local.
In [47]:
dir()
Out[47]:
['In',
'ObjectFoo',
'Out',
'_',
'_13',
'_14',
'_15',
'_16',
'_17',
'_18',
'_19',
'_20',
'_21',
'_22',
'_23',
'_24',
'_3',
'_34',
'_36',
'_37',
'_4',
'_44',
'_45',
'_46',
'_5',
'__',
'___',
'__builtin__',
'__builtins__',
'__doc__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'_dh',
'_i',
'_i1',
'_i10',
'_i11',
'_i12',
'_i13',
'_i14',
'_i15',
'_i16',
'_i17',
'_i18',
'_i19',
'_i2',
'_i20',
'_i21',
'_i22',
'_i23',
'_i24',
'_i25',
'_i26',
'_i27',
'_i28',
'_i29',
'_i3',
'_i30',
'_i31',
'_i32',
'_i33',
'_i34',
'_i35',
'_i36',
'_i37',
'_i38',
'_i39',
'_i4',
'_i40',
'_i41',
'_i42',
'_i43',
'_i44',
'_i45',
'_i46',
'_i47',
'_i5',
'_i6',
'_i7',
'_i8',
'_i9',
'_ih',
'_ii',
'_iii',
'_oh',
'_sh',
'dict1',
'exit',
'fonte',
'foo',
'get_ipython',
'lista',
'new_dict',
'other_dict',
'quit',
'source',
'var']
Como pode ver, alguns objetos e classes que criamos nesse post, ele ficou disponível no escopo
local. Agora quando passa um objeto como argumento, ele lista os atributos disponíveis do mesmo.
In [49]:
instance = ObjectFoo()
dir(instance)
Out[49]:
['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'attr1',
'attr2',
'test']
Se o objeto tem um método chamado __dir__(), esse método deve ser chamado e deve retornar
uma lista de atributos. Isto habilita os objetos de implementarem as funções customizadas de
__getattr__() ou __getattribute__(), para ser a forma da função dir() reportar
esses atributos.
Se o objeto não prover __dir__(), a função tenta fazer o melhor para coletar informações sobre
o objeto passado pelo atributo __dict__, se definido, e do tipo do objeto. A lista resultando não é
necessariamente completo, e pode ser impreciso quando ele tem o __getattr__() customizado.
O mecanismo padrão do dir() pode ser diferente com variados tipos de objetos, sendo que mais
uma vez as tentativas de serem dados relevantes do que as mais completas. Assim:
• Se o objeto é um objeto de um módulo, a lista vai conter os nomes dos atributos do módulo;
• Se o objeto é um type ou objeto de classe, a lista vai conter os nomes dos seus atributos, e
recursivamente os atributos das suas classes base;
• Caso contrário, as listas vão conter os nomes dos atributos do objeto, da sua classe e de
forma recurso, vindo das classes base.
divmod(a, b)¶
Link: https://docs.python.org/3/library/functions.html#divmod
Pega dois argumentos que são números não complexos, e retorna um par de números que consistem
no quociente e o resto de uma divisão inteira.
Com tipos de operandos misturados, as regras para operadores aritméticos binários são aplicados.
Para inteiros, o resultado é o mesmo que (a // b, a % b). Para números de ponto flutuante o
resultado é (q, a % b), onde q é usualmente math.floor(a / b), mas pode ser menos que
um. Em qualquer caso, q * b + a % b está muito perto de a, se a % b for diferente de zero e
que tem o mesmo sinal como b, e 0 <= abs(a % b) < abs(b).
In [2]:
divmod(2, 2)
Out[2]:
(1, 0)
In [4]:
divmod (2, 2.222)
Out[4]:
(0.0, 2.0)
In [6]:
divmod(0, 2)
Out[6]:
(0, 0)
enumerate(iterable, start=0)¶
Link: https://docs.python.org/3/library/functions.html#enumerate
Retorna um objeto enumerate. O argumento iterable deve ser uma sequência, um iterator, ou outro
objeto que suporte iteração. O método __next__() do iterador retornado pelo enumerate()
retorna uma tupla, contendo um contador (do parâmetro start é do padrão 0) e os valores obtidos
por ir percorrendo sobre o iterador.
In [8]:
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
Out[8]:
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
In [10]:
list(enumerate(seasons, start=1))
Out[10]:
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Out[20]:
2
Se o dicionário local for omitido, o padrão será o dicionário global. Se ambos os argumentos forem
omitidos, a expressão será executada no ambiente aonde o eval() foi chamado. O valor de
retorno é o resultado da expressão avaliada. Erros de sintaxe são reportados como exceções.
Essa função pode ser usado para executar objetos code (como criamos pela função compile()),
assim, passando esse tipo de objeto vai ser substituido pela string que usamos antes. Se o objeto
code foi compilado usando o argumento 'exec', o valor de retorno da função eval() será None.
Em todos os casos, se as partes opcionais foram omitidos, o código é executado no escopo atual. Se
somente for passado valores globais, ele deve ser um ducionário, que deve ser usado tanto para
variáveis globais e locais. Se for passado globais e locals, eles serão usados para o que foi definidos.
Lembre-se que globais e locais a nível de módulo é o mesmo dicionário. Se o exec retorna dois
objetos separados como globais e locais, o código deve ser executado como se tivesse sido
incorporado em uma definição de classe.
Se o dicionário de globais não tiver um valor para a chave __builtins__, uma referência para o
dicionário do módulo built-in é inserido. Dessa forma, você pode controlar os builtins que são
disponíveis para serem executados no código, inserido seu próprio dicionário __builtins__
dentro de globals antes de passar para o exec().
In [75]:
exec('x+1')
print(x)
In [77]:
code = """
def ola_mundo():
print('Ola Mundo!')
"""
exec(code)
ola_mundo()
Ola Mundo!
filter(function, iterable)¶
Link: https://docs.python.org/3/library/functions.html#filter
Constrói um iterador em cima dos elementos do parâmetro iterable, para que retorne True. Esse
iterável deve ser uma sequência, um container que suporta iteração ou um iterador simplesmente. Se
o parâmetro function for None, a função de indentidade é assumida, ou seja, todos os elementos
que são iteráveis irá retornar False.
In [25]:
def eh_par(value):
if value % 2 == 0:
return True
return False
numeros = [0, 1, 2, 3, 4]
resultado = filter(eh_par, numeros)
In [32]:
numeros = [0, 1, 2, 3, 4]
resultado = filter(lambda num: True if num % 2 == 0 else False, numeros)
[0, 2, 4]
class float([x])¶
Link: https://docs.python.org/3/library/functions.html#float
Retorna um numéro de ponto flutuante construído por um número ou string enviado ao parâmetro x.
Se o argumento é um string, ele deve conter um número decimal, opcionalmente precedido por um
sinal, e opcionalmente embarcado com espaços. O sinal opcional deve ser + ou -; um sinal + não
tem efeito no valor produzido. O argumento pode ter um string representando NaN (not-a-number),
ou um positivo e negativo infinito. Mais precisamente, a entrada deve estar em conformidado com a
gramática abaixo:
sign ::= "+" | "-"
infinity ::= "Infinity" | "inf"
nan ::= "nan"
numeric_value ::= floatnumber | infinity | nan
numeric_string ::= [sign] numeric_value
Aqui o floatnumber é uma forma literal do python para pontos flufuantes, descritos em Pontos
flutuantes literais. Caso não seja significante, então poe exemplo, "inf", "Inf" e "iNfINity" são todos
grafias aceitáveis para infinito positivo.
Por outro lado, se o argumento é um inteiro ou um número de ponto flutuantes, esse número do tipo
float com o mesmo valor (com ponto de precisão do Python) é retornado. Se o argumento é fora do
intervalo do tipo float da linguagem, um OverflowError deve ser disparado.
Para objetos comuns Python, o nosso objeto x por exemplo, ao ser usado em float(x) vai ser
delegado para a função especial __float__().
float('+1.23'): 1.23
float(' -12345\n'): -12345.0
float('1e-003'): 0.001
float('+1E6'): 1000000.0
float('+Infinity'): inf
float('-Infinity'): -inf
format(value [, format__spec])¶
Link: https://docs.python.org/3/library/functions.html#format
Converte o parâmetro value para um formato representável, controlado parâmetro format_spec.
A intepretação desse formato vai depender do tipo de valor passado para o primeiro parâmetro. No
entanto possui uma sintaxe de formato padrão que é usado pelas funções built-in e que deve ser
levado em consideração. Veja mais sobre eles na seção Mini-linguagem de especificação de
formatos.
Segue alguns exemplos:
In [47]:
print("Número inteiro: ", format(2))
print("Número de ponto flutuante: ", format(2, 'f'))
Número inteiro: 2
Número de ponto flutuante: 2.000000
Número binário: 100
Número octal: 11
Número hexadecimal: C
class frozenset([iterable])¶
Link: https://docs.python.org/3/library/functions.html#func-frozenset
Retorna um novo objeto frozenset, opcionalmente com elementos retirados do parâmetro
iterable. O frozenset é uma classe built-in. Para mais informações é explicado veja frozenset e
Tipos Set - set, frozen, que terá o link em breve.
In [50]:
class Foo(object):
def __init__(self):
self.attrA = 'Foo'
self.attrB = 'Bar'
foo = Foo()
getattr(foo, 'attrA')
Out[50]:
'Foo'
In [55]:
# Passando o valor default em caso de não encontrar
# o atributo
Out[55]:
'Nenhum atributo encontrado'
In [57]:
# Se o atributo não for encontrado, como
# não foi passado um valor default, a exceção
# AttributeError será disparado.
getattr(foo, 'attrX')
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-57-2a88621c904c> in <module>()
3 # AttributeError será disparado.
4
----> 5 getattr(foo, 'attrX')
globals()¶
Link: https://docs.python.org/3/library/functions.html#globals
Retorna um dicionário representando a tabela de símbolos globais que existem. Será sempre um
dicionário de símbolos do módulo atual (dentro de uma função ou método, esse é o módulo onde ele
é definido, não o módulo que é chamado).
hasattr(object, name)¶
Link: https://docs.python.org/3/library/functions.html#hasattr
Verifica se determinado atributo name existe no objeto object. Os argumentos devem ser um objeto
e uma string, respectivamente. Como falado, se encontrado o retorno da função é True, e caso
contrário é retornado False.
In [60]:
hasattr(foo, 'attrA')
Out[60]:
True
In [62]:
hasattr(foo, 'otherAttr')
Out[62]:
False
hash(object)¶
Link: https://docs.python.org/3/library/functions.html#hash
Retorna o valor hash do objeto passado no parâmetro object. O valor hash são inteiros e eles são
usados para facilmente comparar chaves de dicionários durante uma análise do dicionário. Valores
numéricos que comparam sua igualdade são do mesmo valor hash (mesmo se eles são de tipos
diferentes, como o caso de 1 e 1.0).
In [67]:
print("hash(1): ", hash(1))
print("hash(foo)", hash(foo))
hash(1): 1
hash(1.000): 1
hash(foo) -9223363277595646492