[Python] Why Go is not good

enrico franchi enrico.franchi a gmail.com
Ven 17 Lug 2015 16:45:53 CEST


2015-07-17 14:33 GMT+01:00 Davide Muzzarelli <d.muzzarelli a dav-muz.net>:

    Yes:   if greeting:
    No:    if greeting == True:

Nel suggerimento la differenza tra "Yes" e "No" è solo sintassi.
>

No. E' semantica. Nel primo caso stai di fatto andando a chiamare
greeting.__nonzero__ se presente, se no greeting.__len__ e altrimenti e'
semplicemente vero. Nel secondo invece stai andando a chiamare
greeting.__eq__ (oppure greeting.__neq__ oppure greeting.__cmp__) oppure
stai andando a confrontare gli id degli oggetti.

Tipicamente quei due frammenti non sono sintatticamente diversi: sono
filosoficamente diversi. Sono pure ortogonali. Il caso in cui collassano e'
essenzialmente se greeting e' un booleano o un'intero (o qualcosa che si
comporta come tale).

Il terzo caso invece non è affatto sintassi e lo usi quando vuoi essere
> sicuro anche del tipo.
>

Il terzo, come i primi due, non e' solo sintassi e *non* lo usi. E se lo
usi mettici dei bei commenti a spiegare perche' lo usi. Siccome nel 99.9%
dei casi e' un bug, e' molto facile che il primo che ripassa sul codice te
lo sega via. Per cui se c'era un buon motivo, e' bene specificarlo.

Tra l'altro in Python quando cominci a fare check espliciti sui tipi il
codice puzzicchia. Ci sono motivi per farlo e niente da dire... ma sono
*moolto* rari.

Diventa worse se usi l'is quando non serve, ovvero nella maggioranza dei
> casi.
>

Praticamente nella totalita'. Comunque sia == che is in quel caso sono
moolto sospetti.



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


Maggiori informazioni sulla lista Python