无法理解这个Python命令

时间:2014-01-16 07:05:16

标签: python

if 'example' in resp:

上述命令的含义是什么,in resp:是什么?

我正在浏览公开发布的源代码,以便在我创建程序之前更好地了解python,但是我只是不明白或者能够找到“在resp:中”是什么意思。

确切的代码是

if 'example' in resp:
   print 'Success'

4 个答案:

答案 0 :(得分:1)

表达式

'example' in resp

如果变量True包含值resp'example',则评估为False。显然,仅当resp属于包含多个值的类型(例如列表,集合,字符串或元组)时,此方法才有效。这相当于调用:

resp.__contains__('example')

以下是一些例子:

1 in [1, 2, 3, 4] #evaluates to true because the value 1 is found in the list [1, 2, 3, 4]

'a' in "abc" #evaluates to true because the character 'a' is found within the string "abc"

0 in {5, 6, 7} #evaluates to false because the value of 0 is not found within the set {5, 6, 7}

答案 1 :(得分:1)

根据Expressions - Comparisons

  

运算符innot in测试集合成员资格。 x in s   如果x是集合s的成员,则求值为true,false   除此以外。 x不在s中返回s中x的否定。这个系列   成员资格测试传统上一直与序列绑定;一个东西   如果集合是序列,则是集合的成员   包含一个等于该对象的元素。但是,它有意义   许多其他对象类型,以支持成员资格测试而不是   序列。特别是字典(用于键)和设置支持   会员资格测试。

     

对于列表和元组类型,当且仅当存在时,x中的x才为真   存在索引i,使得x == y [i]为真。

     

对于Unicode和字符串类型,当且仅当x是a时,y中的x才为真   y的子串。等效测试是y.find(x)!= -1。注意,x和y   不一定是同一类型;因此,'u'ab'in'abc'将返回   真正。空字符串始终被视为any的子字符串   其他字符串,所以“”在“abc”中将返回True。

答案 2 :(得分:0)

在内部,它会调用resp.__contains__('example')。通常这会检查集合是否包含某个元素。

答案 3 :(得分:0)

in运算符测试包含。根据{{​​1}}的类型,可能是几种不同的东西。

如果resp是字符串,则会测试resp是否为'example'的子字符串:

resp

如果>>> 'example' in 'example4' True >>> 'example' in 'sample' False 是列表,集合,元组或其他集合,则会测试resp是否在集合中:

'example'

如果>>> 'example' in ['example', 'asdf'] True >>> 'example' in ['example4', 'asdf'] False 是dict,则会测试resp是否是dict中的键:

'example'

如果>>> 'example' in {'example': 'asdf'} True >>> 'example' in {'asdf': 'example'} False 属于其他类型,那么resp resp所说的就是in。您可以期待它是上述示例中的精神,但它可以做一些疯狂的事情,如运行Quake或下载色情,如果这是__contains__ resp方法所说的。