获得更多资料欢迎进入我的网站或者 csdn或者博客园

本节主要介绍赋值语句,以及几种特殊的赋值。下面附有之前的文章;

python3入门之print,import,input介绍

python入门之字典

python入门之字符串

python入门之列表和元组

python入门之软件安装

简要介绍下赋值语句

在 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'] 这个对象上。

直接赋值

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

>>> name='peace'
>>> age=22
>>> print(name,age)
peace 22
>>>

序列解包

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


>>> value=1,2,3
>>> value
(1, 2, 3)
>>> x,y,z=value
>>> x
1
>>> y
2
>>> z
3
>>>
##交换变量的值可以直接进行 >>> x,y=y,x
>>> x
2
>>> y
1
>>>

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

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

连续赋值

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

>>> peace=[1,2,3,4]
>>> x=y=z=peace[2]
>>> x
3
>>> y
3
>>> z
3
>>>

表达式赋值

包括以下表达式赋值:

+=:将右侧的值加到变量上的和,然后再赋值给变量;

-=:将变量减去右侧的值得到的差,再赋值给变量;

/=:用变量除以右侧值得到的商,再赋值给变量;

%=:用变量取右侧值的余数,再赋值给变量;

>>> x=1
>>> x+=2
>>> x
3
>>> x*=2
>>> x
6
>>> x-=3
>>> x
3
>>> x/=3
>>> x
1.0
>>> x*=5
>>> x
5.0
>>> x%=3
>>> x
2.0
>>>

引用和拷贝

浅复制:

主要的浅复制方法:

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

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

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

#直接赋值的浅复制
>>> a=[1,2,3]
>>> b=a
>>> b[1]=1
>>> b
[1, 1, 3]
>>> a
[1, 1, 3]
>>>
##L[:]
>>> a=[1,[2,3],3]
>>> b=a[:]
>>> a[0]=2
>>> a[1][1]=8
>>> a
[2, [2, 8], 3]
#b的第二个元素跟着改变了
>>> b
[1, [2, 8], 3]
>>>

深度复制(拷贝)

主要的方法:

有些内置函数,例如 list,能够生成拷贝 list(L)

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



>>> import copy
>>> a=[1,[2,3],3]
>>> b=copy.deepcopy(a)
>>> a[0]=2
>>> a[1][1]=8
>>> a
[2, [2, 8], 3]
>>> b
[1, [2, 3], 3]
>>>

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

相关链接:

python3入门之类

python3入门之函数

python3入门之循环

python3之if语句

python3入门之赋值语句介绍

python3入门之print,import,input介绍

python3入门之set

python3入门之字典

python3入门之字符串

python3入门之列表和元组

python3入门之软件安装

python3爬虫之入门和正则表达式

最新文章

  1. 【Win10开发】响应式布局——AdaptiveTrigger
  2. lambda表达式
  3. Codeforces Round #173 (Div. 2)
  4. cacti应用
  5. 归并排序-java
  6. Python开发程序:FTP程序
  7. Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)
  8. 山东省第三届ACM省赛
  9. C#编写以管理员身份运行的程序
  10. OC细节 - 1.深拷贝与浅拷贝详解
  11. JFileChooser
  12. UIApearance
  13. [js高手之路]node js系列课程-图解express+supervisor+ejs用法
  14. sprintf格式化字符串带来的注入隐患
  15. [LeetCode] 132. Palindrome Partitioning II_ Hard tag: Dynamic Programming
  16. linux学习(杂项)
  17. Day 4-5 序列化 json & pickle &shelve
  18. Eclipse xml中自动提示,添加 dtd或xsd依赖
  19. Hadoop2.6.0版本号MapReudce演示样例之WordCount(一)
  20. Groovy 与 Python 的差异【翻译】

热门文章

  1. 解剖Nginx·模块开发篇(1)跑起你的 Hello World 模块!
  2. ubuntu 14.04 Clion2016.2 安装激活与安装后添加快捷启动方式
  3. IIS相关知识和经验的碎片化记录
  4. Android Touch 事件总结
  5. VS2012用正则表达式统计行数
  6. YII2 全局设定 默认参数
  7. aspnetcore的那些actionresult们
  8. C# 进程Process基本的操作说明
  9. 更改文本的编码jsp.xml.java
  10. 34 输入3个数a,b,c,按大小顺序输出