15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Python que seja usada para desserializá-la.

O módulo json, pelo contrário, foi projetado para ser seguro. Dados

serializados em JSON contêm uma descrição simples da hierarquia do objeto.

A desserialização de dados JSON não expõem um programa em Python a

nenhum risco adicional. Formatos como o JSON devem ser usados para a

comunicação entre programas ou pessoas que não confiam um no outro.

Por exemplo, digamos que se queira usar um objeto do Python para representar o

estado do progresso de um jogador em um jogo. O estado do jogo inclui o nível

ou fase em que o jogador está e o número de vidas que ele ou ela ainda possuem.

class GameState(object):

def __init__(self):

self.level = 0

self.lives = 4

O programa modifica o objeto à medida que o jogo se desenrola.

state = GameState()

state.level += 1 # Jogador passa de fase

state.lives -= 1 # Jogador morreu e tem que recomeçar a fase

Quando o usuário sai do jogo, o programa pode salvar o estado do jogo em um

arquivo para que o jogador possa voltar outro dia à posição em que ele estava e

continuar jogando. O módulo pickle facilita a implementação de algo assim. No

exemplo de código a seguir, gravamos (com dump) o objeto GameState

diretamente em um arquivo:

state_path = '/tmp/game_state.bin'

with open(state_path, 'wb') as f:

pickle.dump(state, f)

Mais tarde, podemos carregar novamente o arquivo (com load) e obter

novamente o objeto GameState como se nunca tivesse sido serializado.

with open(state_path, 'rb') as f:

state_after = pickle.load(f)

print(state_after.__dict__)

>>>

{'lives': 3, 'level': 1}

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!