[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