solo chiamare la funzione selezionata, non entrambi:
random.choice([a,b])()
Qui di seguito è una dimostrazione:
>>> import random
>>> def a():
... print "a"
...
>>> def b():
... print "b"
...
>>> random.choice([a,b])()
a
>>> random.choice([a,b])()
b
>>>
il vecchio codice chiamato entrambe funzioni quando la lista [a(),b()]
è stato creato , facendo in modo che Python stampi sia a
sia b
. Successivamente, ha comunicato allo random.choice
di scegliere dall'elenco [None, None]
, che non fa nulla. Si può vedere questo dalla dimostrazione di seguito:
>>> [a(),b()]
a
b
[None, None]
>>>
Il nuovo codice però utilizza random.choice
per selezionare casualmente un oggetto funzione dalla lista [a,b]
:
>>> random.choice([a,b])
<function b at 0x01AFD970>
>>> random.choice([a,b])
<function a at 0x01AFD930>
>>>
Si chiama allora solo quella funzione.
Le funzioni restituiscono None
per impostazione predefinita. Poiché a
e mancano dichiarazioni di ritorno, ciascuna restituisce None
.
Non so come ho perso che, funziona a meraviglia, grazie! – px06
Woah !! Python è così fantastico !!! –