Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
')
[editar] Imprimindo uma lista ordenada com os itens com a primeira letra em maiscula
lista = ['laranja', 'banana', 'uva'] lista.sort() for item in lista: print item.capitalize()
ou ainda
sum(range(1,101))
[editar] Encapsulamento
Em Python no existe proteo dos membros de uma classe ou instncia pelo interpretador, o chamado encapsulamento. Convenciona-se que atributos com o nome comeando com um _ so de uso privado da classe, mas no h um policiamento do interpretador contra acesso a estes atributos. Uma exceo so nomes comeando com __, no caso em que o interpretador modifica o nome do atributo.
class A: a = 1 # atributo publico _b = 2 # atributo de uso privado __c = 3 # atributo de uso privado, tem o nome modificado para _A__c a = A() print a.a # imprime 1 print a._b # vlido, mas desencorajado print a.__c # invlido, atributo inexistente print a._A__c # vlido, mas *fortemente* desencorajado
[editar] Polimorfismo
class Pessoa: def __init__(self, nome ='', idade=0):
self.nome = nome self.idade = idade def getIdade(self): return self.idade class PessoaCPF(Pessoa): def __init__(self, CPF, nome='', idade=0): Pessoa.__init__(self, nome, idade) self.CPF = CPF ####################################### # Expondo o mtodo __init__ a = Pessoa() Pessoa.__init__(a, 'Leonardo', 22) b = PessoaCPF('122.333.332-1', nome='', idade=0) print a.nome print a.idade print b.CPF # imprime Leonardo # imprime 22 # imprime 122.333.332-1
####################################### # No expondo o mtodo __init__ a = Pessoa('Leonardo', 22) b = PessoaCPF('122.333.332-1', a) print a.nome print a.idade print b.CPF # imprime Leonardo # imprime 22 # imprime 122.333.332-1
[editar] Closures
O exemplo abaixo demonstra o uso de closures em Python:
# Retorna uma funo que aproxima a derivada de f usando o intervalo dx, que deve ser pequeno. def derivada(f, dx): def funcao(x): return (f(x + dx) - f(x)) / dx return funcao
[editar] Geradores
Segue exemplo da gerao preguiosa de nmeros primos que usa a tcnica de gerador:
from itertools import count def gera_primos(parar_em=0): primos = [] for n in count(2): if 0 < parar_em < n: return # lana a exceo StopIteration composto = False for p in primos: if not n % p: composto = True break elif p**2 > n: break if not composto : primos.append(n) yield n for i in gera_primos(): if i > 100: break print i
A definio do gerador aparenta ser idntica a de uma funo, mas difere pela palavrachave yield usada no lugar de return. Na verso 2.4 foi introduzida a possibilidade de interagir compreenso de listas com geradores. Dado o gerador de nmeros primos acima, pode-se definir a coleo preguiosa abaixo.
from itertools import islice primeiro_milhao_de_primos = (i for i in gera_primos() if i < 1000000) Primo_dois_mil = islice(primeiro_milhao_de_primos, 2000, 2001).next()