Python 有 ,= 操作符?

时间:2021-07-08 03:50:42

Python 有 ,= 操作符?

今天分享一个比较少见的用法,那就是 Python 是有 ,= 这种用法的,至于是它是否称得上操作符,这个不重要。

咱们先一起回顾一下逗号相关的用法吧:

1,元组的组成部分

没有逗号的括号,构不成元组,哪怕只有一个元素,也需要有逗号。

  1. In[6]:a=(1,)
  2. In[7]:type(a)
  3. Out[7]:tuple

2、交换两个变量

  1. In[8]:a=1
  2. In[9]:b=2
  3. In[10]:a,b=b,a
  4. In[11]:f"{a=}{b=}"
  5. Out[11]:'a=2b=1'

你想交换三个、四个、多个,也可以这样做。

3、拆解列表,元组,或集合

  1. In[12]:a,b=[1,2]
  2. In[13]:f"{a=}{b=}"
  3. Out[13]:'a=1b=2'
  4. In[14]:a,b=(3,4)
  5. In[15]:f"{a=}{b=}"
  6. Out[15]:'a=3b=4'
  7. In[17]:a,b={5,6}
  8. In[18]:f"{a=}{b=}"
  9. Out[18]:'a=5b=6'
  10. In[19]:

4、,= 操作符?

明白了以上操作,现在下面的代码其运行结果是多少呢?

  1. a,=[2]
  2. b,=[2]
  3. c,=(2,)
  4. d,={2}
  5. e,=range(2,3)
  6. print(a,b,c,d,e)

如果你心中有了结果,可以看下是否符合预期:

  1. >>>a,=[2]
  2. >>>b,=[2]
  3. >>>c,=(2,)
  4. >>>d,={2}
  5. >>>e,=range(2,3)
  6. >>>print(a,b,c,d,e)
  7. 22222
  8. >>>

只要可迭代对象内部仅有一个元素,就可以通过 ,= 的形式把这个值取出来,至于逗号和等号是否挨着,倒无所谓。

一句话,,= 就是拆解列表,元组,集合,可迭代对象的特例,要求其只能有一个元素。

原文链接:https://mp.weixin.qq.com/s/IuhwGGEN0SjTYMtKtCerSQ