[Tutor] random.choice()

wesley chun wescpy at gmail.com
Wed Jul 2 09:54:50 CEST 2008

ok, someone has to be the bad guy and show an example of equivalent
code that's more difficult to read:

choice([use_for_float_demo, use_for_integer_demo])()

seriously tho, the bottom line of what people have been telling you is
that for the function (or method) foo():

def foo():

there is a distinction between:

foo and foo()

in the former, you have a function object.  it's just like any other
Python object, but with one heaping distinction:  it's callable --
this means that u can slap on a pair of parentheses after the object
and execute it, which is what i did after calling choice() above to
pick one of the 2 functions, then *calling it* with the trailing "()".

in the latter, you've not only picked out a function object, but have
also executed it as well.  that's why when you had choice([a(), b()]),
you see the results/output from a() and b() -- you called both, got
both return values, and asked choice() to pick one of the 2 return
values!! and since you throw away the return value, it didn't matter
which one came back because both had executed.


More information about the Tutor mailing list