因此,在阅读了两个版本Python 2.7.10和Python 2.7.13之间的更改日志之后,没有任何内容突然出现,可以解释以下行为。
Python 2.7.10
Python 2.7.10 (default, Aug 7 2015, 10:34:58)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict(foo='bar', bar='baz', fee='fum', baz='fee')
>>> keys = ('baz', 'bar')
>>> d.viewkeys() & keys
set([])
Python 2.7.13
Python 2.7.13 (default, Dec 17 2016, 23:03:43)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> d = dict(foo='bar', bar='baz', fee='fum', baz='fee')
>>> keys = ('baz', 'bar')
>>> d.viewkeys() & keys
set(['bar', 'baz'])
我想知道是否有人对此行为有解释。
答案 0 :(得分:1)
我认为What's New in Python 2.7.13中的这段文字概述了这个问题:
- 问题#26478:修复了使用字典视图和元组的二元运算符时的语义错误。
有关详细信息,请参阅相关的bug issue 26478和previous SO question