[Python] Why Go is not good

Manlio Perillo manlio.perillo a gmail.com
Ven 17 Lug 2015 14:28:20 CEST


2015-07-17 0:53 GMT+02:00 Enrico Bianchi <enrico.bianchi a ymail.com>:

> On 07/13/2015 11:55 AM, enrico franchi wrote:
>
>> > [...]

>
>  a = may_return_null(...)
>> if a is not None:
>>     f(a, ...)
>>
> Bruttino, non tanto perche` non mi piace, ma per com'e` scritto :)
> La sintassi
> if a:
>   f(a,...)
>
> E` molto piu` elegante (si, e` una pulce che non serve a molto) :)


Io ti consiglio di lasciare `a is not None`.
`if a` può significare troppe cose, specialmente in Python, e rischi di
ritrovarti con un comportamento inaspettato.

In Go per evitare problemi del genere hanno deciso che l'istruzione `if`
accetta solo espressioni booleane.


>
>  Fanno sempre e solo stack unwind, non danno controllo al programmatore.
>>
> Mmm... continuo a non capire... Un esempio (o della documentazione)?
>
>  Come dicevo... quello non e' Go idiomatico a mio avviso.
>>
> Anche qua, mi sembra che tu abbia dato piu` peso al codice che ho usato
> come esempio piuttosto che al concetto che volevo esprimere. Personalmente
> ritengo che un try/except sia piu` elegante rispetto al dover fare il check
> per ogni error che ti viene restituito.


http://blog.golang.org/errors-are-values



> Quello che intendo e` che, ad esempio, le operazioni di apertura,
> scrittura e chiusura di un file in Go devono essere gestite una per una,
> mentre in Python le posso gestire tutte nello stesso try/except che,
> personalmente, ritengo piu` sensato
>
>
Fino a quando non devi gestire l'errore.
A molti le eccezioni piacciono perchè ti fanno "dimenticare" che c'è stato
un errore.

Il codice è "bello", ma quando devi gestire gli errori poi le cose iniziano
ad andare in modo diverso.
E la gente inizia a fare:

except Exception:
    #  print traceback

se non di peggio.


Ciao  Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150717/88dade83/attachment.html>


Maggiori informazioni sulla lista Python