Python “在b中返回a”是什么意思?

Python “在b中返回a”是什么意思?,python,Python,我想了解return语句是如何工作的。我熟悉return语句,但不知道return in语句。下面是一个使用它的类方法的示例,我想知道它的作用 def a(self, argv): some = self.fnc("Format Specifier") return argv in some 这意味着argv是否是somein布尔值的元素。有些可能是列表、元组、dict等。如果值中的值为True,则值中的值表示True,否则表示False 一个简单的例子: In [1]: "f

我想了解return语句是如何工作的。我熟悉return语句,但不知道return in语句。下面是一个使用它的类方法的示例,我想知道它的作用

def a(self, argv):
    some = self.fnc("Format Specifier")
    return argv in some

这意味着argv是否是somein布尔值的元素。有些可能是列表、元组、dict等。

如果值中的值为True,则值中的值表示True,否则表示False

一个简单的例子:

In [1]: "foo" in ("foo", "bar", "baz")
Out[1]: True

In [2]: "foo" in ("bar", "baz")
Out[2]: False
因此,在您的情况下,返回argv在某种意义上返回True,如果argv在某种意义上返回False,则返回本身在这里并不重要:您可以将其解释为:

return (argv in some)
现在in关键字的意思是:

集合成员资格测试中的和未测试中的运算符。如果x是集合s的成员,则s中的x计算为true,否则为false。x不在s中返回x在s中的求反。集合成员测试传统上被绑定到序列;如果集合是序列并且包含与该对象相等的元素,则对象是集合的成员。然而,对于许多其他对象类型来说,支持成员资格测试而不是序列是有意义的。特别是,键和集的字典支持成员资格测试

Python使用一种回退机制,在这种情况下,它将检查某些方法是否支持以下方法之一:

首先,它检查一些是列表还是元组:

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

接下来检查argv和some是否都是字符串:

对于Unicode和字符串类型,当且仅当x是y的子字符串时,y中的x为真。等效测试是y.findx!=-1.注意,x和y不必是同一类型;因此,abc中的u'ab'将返回True。空字符串始终被视为任何其他字符串的子字符串,因此在abc中将返回True

现在,实现_包含_方法的每个对象都支持这样的in和not in测试,如文档中所述:

对于定义_包含_方法的用户定义类,当且仅当y._包含_x为真时,y中的x为真

因此,除了实现字典、元组和列表的用法外,您还可以为任意对象定义自己的_contains _方法

支持此功能的另一种方法是:

对于不定义uuu包含uuu但定义uuu iter uuuu的用户定义类,如果在y上迭代时生成某个值z且x==z,则y中的x为真。如果在迭代过程中引发异常,就好像在中引发了该异常一样

最后:

最后,尝试了旧式的迭代协议:如果类定义了uu getitem uuu,则y中的x为真当且仅当存在非负整数索引i,使得x==y[i],并且所有较低的整数索引都不会引发索引器异常。如果引发任何其他异常,就好像在引发该异常一样


如果你知道背景中发生了什么,可能会更清楚。在y中使用x时,这是y的快捷方式。_包含__x1。定义类时,可以定义自己的_contains _方法,该方法实际上可以返回您想要的任何内容。通常,它返回True或False。因此,argv在某些情况下将是argv的结果。_包含一些:True或False。然后你把它还给我

1如果y没有_contains _方法,则会将其转换为迭代器,并检查其中的每个项是否与x相等。

…这并不完全正确。例如,对于str,执行查找检查,在“abc”上迭代只会得到a、b、c。@WillemVanOnsem:“abc”。\uu包含\uuuuuuuuuuab'->True