28.03.18 21:30, Tim Peters пише: > [Tim] >> I have a hard time imaging how that could have come to be, but if it's >> true I'd say the unoptimized code was plain wrong. The dumbest >> possible way to implement `f() and g()` is also the correct ;-) way: >> >> result = f() >> if not bool(result): >> result = g() > Heh - that's entirely wrong, isn't it? That's how `or` is implemented ;-) > > Same top-level point, though: > > result = f() > if bool(result): > result = g() Optimized if f() and g(): spam() is equivalent to result = f() if bool(result): result = g() if bool(result): spam() Without optimization it would be equivalent to result = f() if bool(result): result = g() if bool(result): spam() It calls bool() for the result of f() twice if it is false. Thus there is a small difference between if f() and g(): spam() and tmp = f() and g() if tmp: spam()
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4