Domanda

with open("hello.txt", "wb") as f:
    f.write("Hello Python!\n")

sembra essere lo stesso di

f = open("hello.txt", "wb")
f.write("Hello Python!\n")
f.close()

Qual è il vantaggio di utilizzare aperta .. come al posto di = F? È solo zucchero sintattico? Basta salvare una riga di codice?

È stato utile?

Soluzione

Al fine di essere equivalente alla versione dichiarazione with, il codice che hai scritto dovrebbe essere invece in questo modo:

f = open("hello.txt", "wb")
try:
    f.write("Hello Python!\n")
finally:
    f.close()

Anche se questo potrebbe sembrare come zucchero sintattico, assicura che si rilascia le risorse. In generale il mondo è più complesso di questi esempi artificiosa e se si dimentica un try.. except... o non riescono a gestire un caso estremo, si dispone di perdite di risorse sulle mani.

La dichiarazione with consente di risparmiare da quelle fughe di notizie, rendendo più facile scrivere codice pulito. Per una spiegazione completa, un'occhiata alla PEP 343 , ha un sacco di esempi.

Altri suggerimenti

Se f.write genera un'eccezione, f.close() viene chiamata quando si utilizza with e non chiamato nel secondo caso. Anche f ha una portata minore e il codice è più pulito quando si utilizza with.

Il primo chiude ancora f se si verifica un'eccezione durante il f.write().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top