2012-05-21 13 views
6

Eventuali duplicati:
why does python's list.append evaluate to false?Python - Perché extend() e append() restituiscono None (void)?

A mio parere, credo che list1.extend(list2) e list1.append(num) dovrebbe restituire l'elenco mutato piuttosto che None (void). Oltre ad avere l'effetto collaterale di mutare distruttivamente la lista originale.

+4

io personalmente penso che sia anche un'API mal progettato, e la mutazione API basate su API sono cattive. Tuttavia questa domanda non è appropriata per StackOverflow, dal momento che non è una domanda; è un'opinione che probabilmente solleciterà solo il dibattito. A meno che non consideriamo il titolo "Perché extend() e append() restituiscono None (void)?" come parte della domanda, qual è il caso in cui non è facilmente rispondibile a meno che non si chieda agli sviluppatori cosa stesse passando per la loro mente. – ninjagecko

+3

Inoltre, se desideri questo comportamento, puoi fare "la tua lista + [1]" o "la tua lista + [1,2,3]'. Purtroppo, gli stili di programmazione imperativi (come python) "normalmente" cancellerebbero semplicemente i valori di ritorno se fossero usati da soli sulle linee. – ninjagecko

+0

@ninjagecko: viene posta una domanda, la domanda è "Perché extend() e append() restituiscono None (void)?" Vedi questa risposta in particolare: (http://stackoverflow.com/a/1682601/21945) – mhawke

risposta

2

Credo che l'intento fosse quello di promuovere codice leggibile e ridurre i bug. Questa decisione è stata presa molto tempo fa, ma probabilmente è possibile trovare di più guardando gli archivi delle mailing list python/python-dev.

python3 sarebbe stata la possibilità di cambiare questo comportamento, ma come vedete rimane, quindi non è considerato un errore di progettazione da parte del team di sviluppo

Problemi correlati