Sintaxe e semântica de PythonA sintaxe da linguagem de programação Python é o conjunto de regras que definem como um programa em Python será escrito e interpretado (tanto pelo sistema de tempo de execução como pelo ser humano). Python foi concebido para ser uma linguagem altamente legível.[1] Ela possui um layout visual relativamente organizado e usa palavras em Inglês com freqüência, quando outras linguagens usam pontuação. Python objetiva a simplicidade e generalidade na concepção da sua sintaxe, encapsulados no mantra "Deve haver um - e preferencialmente só um - modo óbvio de fazer isso", do "The Zen of Python".[2] Observe que este mantra é deliberadamente oposto ao mantra do Perl de "há mais de uma maneira de fazê-lo". Palavras-chaveO Python tem as seguintes palavras-chave ou palavras reservadas; eles não podem ser usados como identificadores.[3] No Python 3.5 ela vem com as seguintes palavras adicionais: Programação funcionalComo mencionado acima, outra força do Python é a disponibilidade do estilo de programação funcional. Como pode ser esperado, isto torna o trabalho com listas e outras coleções muito mais sério. GeradoresIntroduzido no Python 2.2 como uma funcionalidade opcional e finalizada na versão 2.3, os geradores são mecanismos do Python para avaliação preguiçosa de uma função que diferentemente retornaria uma lista proibitiva de espaço ou computacionalmente intensiva. Este é um exemplo para gerar preguiçosamente números primos: from itertools import count
def gera_primos(parar_em=0):
primos = []
for n in count(2):
if 0 < parar_em < n:
return # lança a exceção 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
Expressões geradorasIntroduzidas no Python 2.4, expressões geradoras são a avaliação preguiçosa (lazy) equivalentes de compreensões de listas. Usando o gerador de número primo fornecido na seção acima, podemos definir uma coleção preguiçosa, mas não completamente infinita. from itertools import islice
primos_sob_milhao = (i for i in gera_primos() if i < 1000000)
doir_milesimo_primo = islice(primos_sob_milhao, 1999, 2000).next()
DecoradoresUm decorator, ou decorador, é um objeto Python que pode ser chamado com um argumento simples, e que altera as funções ou métodos. Decoradores do Python foram inspirados em parte por anotações de Java e têm uma sintaxe similar. A sintaxe do decorador é um açúcar sintático puro, que usa o @viking_chorus
def item_menu():
print "spam"
é equivalente a def item_menu():
print "spam"
item_menu = viking_chorus(item_menu)
Decoradores são uma forma de metaprogramação, pois eles aumentam a ação da função ou método que eles decoram. Por exemplo, no exemplo acima, def viking_chorus(minhafunc):
def func_interna(*args, **kwargs):
for i in range(8):
minhafunc(*args, **kwargs)
return func_interna
Usos canônicos de decoradores de funções são para a criação de métodos de classe ou métodos estáticos, adição de atributos de função, detecção, configuração de pré e pós-condições e sincronização, mas pode ser usado para muito mais além, incluindo eliminação de recursão de cauda, memoização e até mesmo para melhorar a escrita dos decoradores. Decoradores podem ser encadeados colocando-os em linhas adjacentes: @invincible
@favorite_color("Azul")
def cavaleiro_branco():
pass
é equivalente a def cavaleiro_branco():
pass
cavaleiro_branco = invincible(favorite_color("Azul")(cavaleiro_branco))
ou, usando variáveis intermediárias def cavaleiro_branco():
pass
blue_decorator = favorite_color("Azul")
decorated_by_blue = blue_decorator(cavaleiro_branco)
cavaleiro_branco = invincible(decorated_by_blue)
No exemplo acima, o decorador def favorite_color(color):
def yet_another_decorator(func):
def wrapper():
print color
func()
return wrapper
return yet_another_decorator
Isto iria então decorar a função Em versões do Python anteriores à versão 2.6, os decoradores se aplicavam às funções e métodos, mas não às classes. No entanto, decorar um método (falso) Referências
Ligações externas
|