C'è una cosa che non riesco a capire in JavaScript o Python, e questa è la sintassi   delete    o   del   . 
In JavaScript:
obj = {ha: 123, hi: 3.14}
delete obj.ha               # now obj is {hi: 3.14}
In Python:
d1 = {"ha" : 123, "hi" : 3.14}
del d1["ha"]                # now d1 is {'hi': 3.14}
 Ma cosa significa   delete obj.ha    o   del d1["ha"]   ? 
 In JavaScript,   delete obj.ha    può significare   delete 123   , perché   obj.ha    valuta   123   . 
 Allo stesso modo, in Python,   del d1["ha"]    può significare   del 123    perché   d1["ha"]    valuta a   123   . 
 Quindi non ha senso   delete 123    in entrambi i casi. 
 Quindi stiamo dicendo, beh, la maggior parte delle volte, le regole per valutare qualcosa e poi applicarlo al lavoro con   delete    o   del   , ma a volte, semplicemente "magicamente" funzionano nell'altro modo? 
 Ad esempio, penso che Smalltalk o Ruby abbiano molto più senso, che è   h.delete("ha")   , vale a dire passare il messaggio all'oggetto   h   , che è un dizionario o un hash, che per il chiave   ha   , rimuovila. Questo è coerente con tutto il resto. Quindi non abbiamo la cosa strana come   delete obj.ha    - oh non è uguale a   delete 123   . 
 (Python   h.pop(key)    ha lo stesso effetto di   del h[key]   , a quanto pare, ma avere la sintassi   del h[key]    sembra ancora strano).