python3入门之赋值语句介绍

x33g5p2x  于2021-03-13 发布在 其他  
字(2.1k)|赞(0)|评价(0)|浏览(453)

简要介绍下赋值语句

在 python 中赋值语句总是建立对象的引用值,而不是复制对象。因此,python 变量更像是指针,而不是数据存储区域
Python 没有「变量」,我们平时所说的变量其实只是「标签」,是引用。

执行

values=[‘a’,’b’,’c’]
的时候,Python 做的事情是首先创建一个列表对象[‘a’,’b’,’c’],然后给它贴上名为 values 的标签。如果随后又执行

values=[‘d’,’e’,’f’]
的话,Python 做的事情是创建另一个列表对象[‘d’,’e’,’f’],然后把刚才那张名为 values 的标签从前面的[‘a’,’b’,’c’] 对象上撕下来,重新贴到 [‘d’,’e’,’f’] 这个对象上。

直接赋值

语句格式:变量名称 = 对象

  1. >>> name='peace'
  2. >>> age=22
  3. >>> print(name,age)
  4. peace 22
  5. >>>

序列解包

序列解包又称递归解包,将多个值的序列解开放到变量的序列中

  1. >>> value=1,2,3
  2. >>> value
  3. (1, 2, 3)
  4. >>> x,y,z=value
  5. >>> x
  6. 1
  7. >>> y
  8. 2
  9. >>> z
  10. 3
  11. >>>
  12. ##交换变量的值可以直接进行
  13. >>> x,y=y,x
  14. >>> x
  15. 2
  16. >>> y
  17. 1
  18. >>>

当函数返回的树序列时序列解包显得非常有用;比如如下:

  1. #从字典中弹出任意一对儿键值对儿,并赋值给两个变量
  2. >>> studentId={'peace':'201421014960','nick':'2014'}
  3. >>> key,value=studentId.popitem()
  4. >>> key
  5. 'nick'
  6. >>> value
  7. '2014'
  8. >>>

连续赋值

同时将一个变量赋值给多个变量;

  1. >>> peace=[1,2,3,4]
  2. >>> x=y=z=peace[2]
  3. >>> x
  4. 3
  5. >>> y
  6. 3
  7. >>> z
  8. 3
  9. >>>

表达式赋值

包括以下表达式赋值:
+=:将右侧的值加到变量上的和,然后再赋值给变量;
-=:将变量减去右侧的值得到的差,再赋值给变量;
/=:用变量除以右侧值得到的商,再赋值给变量;
%=:用变量取右侧值的余数,再赋值给变量;

  1. >>> x=1
  2. >>> x+=2
  3. >>> x
  4. 3
  5. >>> x*=2
  6. >>> x
  7. 6
  8. >>> x-=3
  9. >>> x
  10. 3
  11. >>> x/=3
  12. >>> x
  13. 1.0
  14. >>> x*=5
  15. >>> x
  16. 5.0
  17. >>> x%=3
  18. >>> x
  19. 2.0
  20. >>>

引用和拷贝

浅复制:

主要的浅复制方法:
(1)没有限制条件的分片表达式(L[:])能够复制序列,但此法只能浅层复制。

(2)字典 copy 方法,D.copy() 能够复制字典,但此法只能浅层复制

对于不可变对象和可变对象来说,浅复制都是复制的引用,只是因为复制不变对象和复制不变对象的引用是等效的(因为对象不可变,当改变时会新建对象重新赋值)。所以看起来浅复制只复制不可变对象(整数,实数,字符串等),对于可变对象,浅复制其实是创建了一个对于该对象的引用,也就是说只是给同一个对象贴上了另一个标签而已。

  1. #直接赋值的浅复制
  2. >>> a=[1,2,3]
  3. >>> b=a
  4. >>> b[1]=1
  5. >>> b
  6. [1, 1, 3]
  7. >>> a
  8. [1, 1, 3]
  9. >>>
  10. ##L[:]
  11. >>> a=[1,[2,3],3]
  12. >>> b=a[:]
  13. >>> a[0]=2
  14. >>> a[1][1]=8
  15. >>> a
  16. [2, [2, 8], 3]
  17. #b的第二个元素跟着改变了
  18. >>> b
  19. [1, [2, 8], 3]
  20. >>>

深度复制(拷贝)

主要的方法:
有些内置函数,例如 list,能够生成拷贝 list(L)

copy 标准库模块能够生成完整拷贝:deepcopy 本质上是递归 copy

  1. >>> import copy
  2. >>> a=[1,[2,3],3]
  3. >>> b=copy.deepcopy(a)
  4. >>> a[0]=2
  5. >>> a[1][1]=8
  6. >>> a
  7. [2, [2, 8], 3]
  8. >>> b
  9. [1, [2, 3], 3]
  10. >>>

这里对引用和拷贝只是简单的介绍,后面讲到对象会继续深究

相关文章