называют только функцию выбран, но не оба из них:
random.choice([a,b])()
Ниже демонстрация:
>>> import random
>>> def a():
... print "a"
...
>>> def b():
... print "b"
...
>>> random.choice([a,b])()
a
>>> random.choice([a,b])()
b
>>>
Ваш старый код называется оба функции, когда список [a(),b()]
был создан , заставляя Python печатать как a
, так и b
. Впоследствии он сказал random.choice
на выбор [None, None]
, который ничего не делает. Вы можете увидеть это с демонстрации ниже:
>>> [a(),b()]
a
b
[None, None]
>>>
Новый код, однако использует random.choice
случайным образом выбирать объект функции из списка [a,b]
:
>>> random.choice([a,b])
<function b at 0x01AFD970>
>>> random.choice([a,b])
<function a at 0x01AFD930>
>>>
Затем он вызывает только то, что функция.
Функции возвращают None
по умолчанию. Поскольку a
и b
не имеют возвратных операторов, каждый из них возвращает None
.
Не знаю, как я пропустил, что работает на удивление, спасибо! – px06
Woah !! Python так потрясающе !!! –