[Python] ftplib and upload file

Enrico Franchi enrico.franchi a gmail.com
Lun 4 Lug 2011 12:01:02 CEST


Marco B. wrote:

> Inoltre l'operatore % causa dei comportamenti carini come in questo caso
> (visto a un talk di Hettinger a Europython):
>
>      >>> "%d" % 3 * 3
>     '333'
>      >>> "%d" % 3 ** 3
>     '27'
>      >>> "%d" % 3 % 3
>     Traceback (most recent call last):
>        File "<stdin>", line 1, in <module>
>     TypeError: not all arguments converted during string formatting
>
>
> Mentre:
>
>      >>> "{0}".format(3 * 3)
>     '9'
>      >>> "{0}".format(3 ** 3)
>     '27'
>      >>> "{0}".format(3 % 3)
>     '0'


Ora capisco che la cosa possa essere 'sorprendente', ma a me pare una 
normale applicazione delle regole di precedenza. Se si usano gli 
operatori o si conoscono tali regole, oppure ci si fa male.

Pero' a questo punto bisognerebbe toglierli tutti, perche' sono tutti 
potenzialmente pericolosi, a partire da ** che associa a *destra*

In [42]: 2 ** 3 ** 2
Out[42]: 512

In [43]: 2 ** (3 ** 2)
Out[43]: 512

In [44]: (2 ** 3) ** 2
Out[44]: 64

Questa e' essenzialmente la posizione di Java. E hanno in un certo senso 
anche ragione, figuriamoci. Nei linguaggi ad oggetti, specie in quelli 
dinamici o con buoni livelli di dinamismo gli operatori, per quanto 
comodi da usare, sono piuttosto complessi da scrivere (bene).



Quello che rimane e' il fatto che abbiano deciso di deprecare %, il che 
vuole dire che effettivamente e' una buona idea non usarlo nel codice 
nuovo.

Avranno avuto i loro buoni motivi, per carita'. Io non sento il bisogno 
dell'ennesimo linguaggio di interpolazione di stringhe... stare con 
quello di C mi andava benone. Mi incasino a sufficienza con quello di 
Erlang, common lisp, Prolog, etc etc etc.

E tanto per cambiare sento sempre meno il bisogno di passare a Python 3. 
Speriamo che per quando il 2 sara' da mollare ci sara' un buon 
linguaggio alternativo.



-- 
.
..: -enrico-



Maggiori informazioni sulla lista Python