私はラムダについて読んでいて(Pythonに飛び込みました)、サンプルコードを実行しましたが、テキストの状態とは異なる結果が得られました。それはexample 4.21
:
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
これは私のpy 2.7コンソール出力です:
>>> collapse = True
>>> processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
>>> processFunc("this is\na\ttest")
'this is a test'
>>> collapse = False
>>> processFunc("this is\na\ttest")
'this is a test'
ご覧のとおり、collapse
値に関係なく最初のラムダ式が返されます。私の考えや Python のバージョンが変更されたのは何か問題があるのでしょうか、それともこの伝説的な本が述べているものとは異なる結果が得られたのはなぜでしょうか?