什么"返回b"意思?

时间:2016-04-27 00:31:43

标签: python

我想了解return语句的工作原理。我熟悉return声明但未了解return in 声明。下面是一个使用它的类方法的示例,我想知道它的作用。

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

4 个答案:

答案 0 :(得分:5)

value in values表示“True如果valuevaluesFalse

一个简单的例子:

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

In [2]: "foo" in ("bar", "baz")
Out[2]: False

因此,在您的情况下,return argv in some表示“如果True argv,则返回some,否则返回False

答案 1 :(得分:4)

这意味着argv是否是某些元素(布尔值)。有些可能是list,tuple,dict等。

答案 2 :(得分:2)

如果您知道背景中发生了什么,可能会更清楚。当您使用x in y时,这是y.__contains__(x) 1 的快捷方式。定义类时,可以定义自己的__contains__方法,该方法实际上可以返回您想要的任何内容。通常,它会返回TrueFalse。因此,argv in some将是argv.__contains__(some)的结果:TrueFalse。然后你返回。

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

答案 3 :(得分:0)

$eventParams本身并不重要:您可以将其解释为:

issue

现在in关键字意味着:

  

运营商returnreturn (argv in some) 测试集合成员资格。如果in是集合not in的成员,则x in s评估为true,否则为xs返回false的否定。集合成员资格测试传统上一直与序列绑定;如果集合是序列并且包含与该对象相等的元素,则对象是集合的成员。但是,许多其他对象类型支持成员资格测试而不是序列是有意义的。特别是,词典(用于键)和集合支持成员资格测试。

Python使用回退机制来检查x not in s(在本例中)是否支持以下方法之一:

首先检查x in s是列表还是元组:

  

对于列表和元组类型,somesome当且仅当存在索引x in y时,truei为{ {1}}。

接下来,它会检查x is y[i]x == y[i]是否为字符串:

  

对于Unicode和true类型,argvsome当且仅当strx in y子字符串时才true }。等效测试是x。注意,y不一定是同一类型;因此,y.find(x) != -1中的x and y将返回u'ab'。空字符串始终被视为任何其他字符串的子字符串,因此'abc'中的True将返回True。

现在,每个实现""方法的对象都在测试中支持"abc"__contains__,如文档中进一步描述的那样:

  

对于定义in方法的用户定义类,当{且仅not__contains__()时,x in ytrue

除了实现字典,元组和列表的用法之外,您还可以为任意对象定义自己的y.__contains__(x)方法。

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

  

对于未定义true但定义__contains__但定义__contains__()的用户定义类,__iter__()如果某些值为x in ytruez迭代x == z时生成。如果在迭代期间引发异常,那就好像是在异常中引发异常。

最后:

  

最后,尝试了旧式迭代协议:如果一个类定义y__getitem__()x in y当且仅当存在非负整数索引时 true使i和所有较低整数索引不会引发x == y[i]异常。 (如果引发任何其他异常,就好像在异常中引发异常)。