Sto lavorando su un programma Python 3 che, tra le altre cose, scriverà i dati in file di testo in numerosi formati. Ho una funzione per formato, che genera i dati da scrivere. Vedo due possibili modi di scrivere queste funzioni: una utilizza yield
e l'altra utilizza stream.write
.
Considera questo stupido esempio, scrivendo solo un numero intero per riga:
def numbers(max):
for i in range(max):
yield str(i) + "\n"
with open(file, "w") as f:
f.writelines(numbers(10))
def numbers(max, stream):
for i in range(max):
stream.write(i + "\n")
with open(file, "w") as f:
numbers(10, f)
Trovo che la prima versione abbia una funzione migliore (ad esempio un parametro in meno), ma forse il codice che la consuma è un po 'più complicata. Ma trovo anche più facile testare, dal momento che non ho bisogno di costruire una classe di flusso fittizio che catturi l'output.
Qualcuno di questi è migliore dell'altro o mi sto semplicemente bloccando su una decisione non importante? Le mie priorità sono la produzione di codice leggibile e pignolo.