怪异设置python REPL中的行为

时间:2018-10-06 19:25:30

标签: python python-3.x read-eval-print-loop

我是python的新手,经常使用REPL检查一些代码段。

我试图仅根据元组中的第一个值检查集合中是否包含元组。知道python中的_pass的意思,我写了这样的话:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = {('a',1),('b',2)}
>>> x
{('b', 2), ('a', 1)}
>>> ('a',_) in x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
>>> ('a',1) in x
True
>>> ('a',_) in x
True

因此,您可以看到第一个('a',_) in x语句产生了TypeError,但是下一个给出了没有错误的输出。

有人可以解释一下这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

_设置为repl返回的最后一个非None结果。因此,>>> ('a',_) in x>>> ('a', True) in x相同。还请注意,True是Python中1的特例。