>>
>
..
.
.pyc
e .pyo
così che l'esecuzione dello stesso file sia più veloce
in un secondo tempo (la compilazione del sorgente in byte code può
essere salvata). Questo ``linguaggio intermedio'' viene eseguito su
di una ``macchina virtuale'' che chiama delle corrispondenti
subroutine per ogni bytecode.
L'implicita conversione di un'istanza di un tipo in un'altro, durante
un'operazione che coinvolge due argomenti dello stesso tipo. Per
esempio, int(3.15)
converte il numero in virgola mobile in un
numero intero, 3
; ma in 3+4.5
ogni argomento è di un
tipo differente (uno intero ed uno in virgola mobile) ed entrambi
dovranno essere convertiti nello stesso tipo prima che siano sommati o
che venga sollevata l'eccezione TypeError
. La coercizione
tra due operandi può essere realizzata con la funzione built-in
coerce
; quindi 3+4.5
è equivalente a chiamare
operator.add(*coerce(3, 4.5))
ed al risultato di
operator.add(3.0, 4.5)
. Senza la coercizione, tutti gli
argomenti, anche di tipo compatibile, dovrebbero essere normalizzati
allo stesso valore dal programmatore, per esempio
float(3)+4.5
piuttosto che 3+4.5
.
Un'estensione del familiare sistema dei numeri reali in cui tutti i
numeri vengono espressi come la somma di una parte reale ed una
immaginaria. I numeri immaginari sono reali multipli dell'unità
immaginaria (la radice quadrata di -1
), spesso scritta
i
in matematica o j
in ingegneria. Python ha il
supporto built-in per i numeri complessi, che vengono scritti con
quest'ultima notazione; la parte immaginaria viene scritta con il
suffisso j
, ad esempio 3+1j
. Per avere accesso alle
complesse equivalenza del modulo math, usate
cmath. L'uso dei numeri complessi è una funzionalità
matematica abbastanza avanzata. Se non ne siete consapevoli o non
avete necessità di conoscere l'argomento, potrete quasi certamente
ignorarli.
11/4
correntemente viene
valutata come 2
. Se il modulo in cui viene eseguito ha
abilitato true division per mezzo dell'esecuzione di:
from __future__ import division
l'espressione 11/4
verrà valutata come 2.75
. Attraverso
l'importazione del modulo
__future__
e la valutazione delle variabili, potrete notare come la nuova
funzionalità viene prima aggiunta al linguaggio e quindi diventa
predefinita:
>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
11/4
viene correntemente valutata come 2
,
in contrasto al 2.75
restituito dalla divisione con numeri in
virgola mobile; anche chiamata floor division. Quando
vengono divisi due interi il risultato sarà sempre un altro intero (a
meno che non venga adottata la divisione floor). Comunque, se uno
degli operandi è un altro numero di tipo diverso (simile al
float), al risultato verrà applicata una coercizione (vedete
coercizione) al tipo comune. Per esempio, un intero diviso un
numero in virgola mobile, fornirà un risultato in virgola mobile,
possibilmente con frazioni decimali. La divisione di interi può
essere forzata usando l'operatore //
invece dell'operatore
/
. Vedete anche __future__.
python
senza argomenti (possibilmente selezionandolo sul vostro
computer dal menu principale). Questo è un modo veramente pratico e
potente per verificare ogni nuova idea o ispezionare moduli e package
(ricordatevi help(x)
).
for
lo farà automaticamente per voi,
creando una variabile temporanea senza nome che manterrà l'iteratore
per la durata del ciclo. Vedete anche iteratori,
sequenze e generatori.
result = ["0x%02x" % x for x in range(256) if x % 2 == 0]
genera una lista di stringhe contenenti i numeri esadecimali (0x..)
che sono pari nell'intervallo da 0 a 255. La clausola if è
facoltativa. Se omessa, tutti gli elementi nell'intervallo
range(256)
vengono, in questo caso, processati.
import this
''.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.