"con open () come" e indentazione

0

Non sono riuscito a trovare alcuna indentazione ufficiale raccomandata per il seguente idioma (direttamente da link ):

with open(path) as f:
    data = f.read()
    do something with data

o

with open(path) as f:
    data = f.read()
do something with data

IMHO, la prima versione è più adatta a mostrare l'ambito, ma quest'ultima può impedire un rientro eccessivo. La scelta di uno di questi è solo una questione di gusti? O c'è qualche fonte autorevole o tradizione consolidata da seguire?

Come nota a margine, non posso fare a meno di pensare che con sia abbastanza diverso dall'altro parole chiave di Python che costruiscono blocchi. Ad esempio, non ci sono dubbi sulla scelta tra:

if condition:
    do something
    do something different

o

if condition:
    do something
do something different

Poiché fanno ... beh, qualcosa di diverso.

    
posta Aristide 23.02.2017 - 09:37
fonte

2 risposte

10

Uso sempre il secondo approccio perché garantisce che non tenga la risorsa (file nel tuo caso) aperta più a lungo del necessario.

    
risposta data 23.02.2017 - 09:56
fonte
3

Nel rientro di Python influisce sul funzionamento del programma.

with open(path) as f:
    data = f.read()
    do something with data

significa: aprire il percorso in f, leggere i dati, fare cose con i dati, chiudere f

e

with open(path) as f:
    data = f.read()
do something with data

significa: aprire il percorso in f, leggere i dati, chiudere f, fare cose con i dati. (Mi piace di più, dato che preferisco chiudere i file il prima possibile)

Quindi non sono strettamente equivalenti: l'indentazione nel magico mondo di Python conta tanto quanto le parentesi graffe nei linguaggi simili a C.

    
risposta data 23.02.2017 - 13:17
fonte

Leggi altre domande sui tag