zoukankan      html  css  js  c++  java
  • Python 变量交换

     1 # coding = utf-8
     2 
     3 a, b = 1, 2
     4 print 'before change'
     5 print a, b
     6 
     7 a, b = b, a   
     8 print 'after change'
     9 print a, b 
    10 
    11 #>>> 
    12 #before change
    13 #1 2
    14 #after change
    15 #2 1

    理解第7行a, b = b, a是关键。

    再看看下面的代码,过渡到c = b, a:

     1 a = 1
     2 b =2
     3 c= b
     4 print c    
     5 #2  c = b     c指向了一个整数
     6 
     7 c = b,
     8 print c
     9 #(2,)    c = b,   c指向了一个元组
    10 
    11 c = b, a
    12 print c
    13 #(2, 1)   c = b ,a   c指向了一个元组
    
    

    原来,赋值号右边的b, a 组成了元组。在看看如何定义一个元组,就会发现b, a 就是用逗号作为分割建立了一个元组,这个过程叫做打包。  它和c = (b, a)都是同样定义了一个元组。可见,()在定义元组的时候并非是必须的。

    既然有打包,就有解包。看看下面的代码:

     1 a, b, c = 1, 2 ,3 
     2 
     3 d = a, b, c
     4 print d
     5 #(1, 2, 3)   将a,b,c所指的值打包成一个元组,赋给d
     6 
     7 e, f ,g = d   #将多个变量用逗号隔开并赋予等号右边元组d中相应位置的值
     8 print e
     9 #1          
    10 print f
    11 #2
    12 print g
    13 #3

    上面第七行,将多个变量用逗号隔开并赋予等号最右边元组d中相应位置的值,这个过程叫做解包。

     

    所以a, b = b, a 就可以理解成打包和解包的两个过程,即 c= (b , a);   a, b = c

    用打包和解包,可以实现 不用临时变量来交换数据。

  • 相关阅读:
    通道分离与合并
    opencv颜色表操作
    opencv trackbar
    像素操作
    opencv 像素读写
    py 时间与日期
    py 字典
    py 元组
    py 列表
    课后作业-阅读任务-阅读提问-3
  • 原文地址:https://www.cnblogs.com/haoshine/p/5117433.html
Copyright © 2011-2022 走看看