15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

função game_logic sem ter que atualizar o código que o cerca. Eu posso

modificar as regras ou adicionar esferas de influência maiores usando a

mecânica existente de Query, Transition e TICK, o que demonstra como as

corrotinas segregam muito bem os problemas, um importante princípio no

projeto e planejamento de um sistema.

Corrotinas no Python 2

Infelizmente, o Python 2 não tem muito do açúcar sintático que torna as

corrotinas tão elegantes no Python 3. Há duas limitações. Primeiro, não existe

uma expressão yield from. Isso significa que quando queremos montar

composições de corrotinas geradores no Python 2, é necessário incluir um laço

no ponto de delegação.

# Python 2

def delegated():

yield 1

yield 2

def composed():

yield 'A'

for value in delegated(): # No Python 3 isso seria um "yield from"

yield value

yield 'B'

print list(composed())

>>>

['A', 1, 2, 'B']

A segunda limitação é que não há suporte para o comando return nos geradores

do Python. Para obter o mesmo comportamento que interaja corretamente com

blocos try/except/finally, é necessário definir seu próprio tipo de exceção e

elevá-lo quando quiser retornar um valor.

# Python 2

class MyReturn(Exception):

def __init__(self, value):

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!