Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python赋值运算符中使用逗号和下划线的意义?_Python_Syntax_Iterable Unpacking - Fatal编程技术网

在Python赋值运算符中使用逗号和下划线的意义?

在Python赋值运算符中使用逗号和下划线的意义?,python,syntax,iterable-unpacking,Python,Syntax,Iterable Unpacking,通读彼得·诺维格的著作,我遇到了一些我以前从未见过的Python习语 我知道函数可以返回一个元组/值列表,在这种情况下,可以为结果分配多个变量,例如 def(): 返回1,2 a、 b=f() 但以下每一项的含义是什么 d2, = values[s] ## values[s] is a string and at this point len(values[s]) is 1 如果len(values[s])==1,那么此语句与d2=values[s]有何不同 关于在作业中使用下划线的另一个

通读彼得·诺维格的著作,我遇到了一些我以前从未见过的Python习语

我知道函数可以返回一个元组/值列表,在这种情况下,可以为结果分配多个变量,例如

def():
返回1,2
a、 b=f()
但以下每一项的含义是什么

d2, = values[s]  ## values[s] is a string and at this point len(values[s]) is 1
如果
len(values[s])==1
,那么此语句与
d2=values[s]
有何不同

关于在作业中使用下划线的另一个问题:

_,s = min((len(values[s]), s) for s in squares if len(values[s]) > 1)

下划线是否具有基本上丢弃列表中返回的第一个值的效果?

与任何其他变量名类似,但通常表示“我不关心此变量”

第二个问题:它是“价值解包”。当函数返回元组时,可以解压缩其元素

>>> x=("v1", "v2")
>>> a,b = x
>>> print a,b
v1 v2

d2,=values[s]
a,b=f()
类似,只是不打包1个元素元组

>>> T=(1,)
>>> a=T
>>> a
(1,)
>>> b,=T
>>> b
1
>>> 

a
是元组,
b
是整数。

Python shell中的uu也指最后一个操作的值。因此

>>> 1
1
>>> _
1

逗号表示元组解包。返回值是一个元组,因此按照元组元素的顺序将其解包到由逗号分隔的变量中。

您可以在元组中使用尾随逗号,如下所示:

>>> x=("v1", "v2")
>>> a,b = x
>>> print a,b
v1 v2
>>> (2,)*2
(2, 2)

>>> (2)*2
4

是的,但在上面给出的上下文中,它是一个“不在乎”变量。那么'b,=t'表示从该元组中获取第一个元素?它是否与“b=T[0]”同义?我需要更多的例子或更少的冗长解释^^是的,这是相同的结果