логическое выражение python не «короткое замыкание»?

Например:

def foo():
    print 'foo'
    return 1
if any([f() for f in [foo]*3]):
   print 'bar'

Я думал, что приведенный выше код должен выводить:

foo
bar

вместо:

foo
foo
foo
bar

Почему? как я могу добиться эффекта "короткого замыкания"?

10
задан John Wang 29 November 2010 в 08:18
поделиться