2015-06-26 4 views
12

Sono un principiante Python e ho un puzzle. codice Quando scrivo in questo modo:Quando assegno una lista a variabile perché Pycharm mi dà un prompt che è "questa lista di creazione potrebbe essere riscritta come una lista letterale"?

lst = [1, 2, 3, 4] 

PyCharm dammi un prompt che è "questa creazione elenco potrebbe essere riscritta come una lista letterale". Ma se è sostituito da

lst = list([1, 2, 3, 4]) 

PyCharm non dice nulla. Chi potrebbe dirmi perché?

Questo codice è simile a lst = [1, 2, 3, 4] legale in Python? Posso ignorare prompt?

risposta

8

Controllare il codice per assicurarsi di non disporre di lst altrove come lst=[].

Se si digita il seguente:

lst= [] 
# more code 
lst = [1, 2, 3, 4] 

Riceverai la richiesta che hai. Non ti imbatterai in problemi se lo mantieni così, ma è una cattiva pratica.

In questi due casi si sta utilizzando una funzione per modificare la variabile: list() e append(). Nella precedente in cui stai solo ridefinendo la variabile in modo esplicito.

Un altro esempio improprio:

a = 7 
# some code that has nothing to do with "a" or uses it 
a = 8 

Basta impostare a = 8 per cominciare. Non è necessario conservare a = 7.

12

È assolutamente legale scrivere codice come quello in Python. Tuttavia, il codice scrivere come

lst = [1, 2, 3, 4, 12] 

sarebbe "migliore" di

lst = [1, 2, 3, 4] 
... # code has nothing do to with lst 
lst.append(12) 

In generale, l'ex si sarebbe avere prestazioni migliori rispetto al secondo, ma se quest'ultimo è più leggibile nella vostra caso/hai una buona ragione per farlo, quindi puoi ignorare il prompt di PyCharm.

Se ti dà fastidio, è possibile attivare questa ispezione off in

"creazione Lista PyCharm-> Impostazioni-> Editor-> inspection-> Python-> potrebbe essere ..."