Python全栈day19(函数补充)

Posted minseo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈day19(函数补充)相关的知识,希望对你有一定的参考价值。

一,深浅拷贝

  看拷贝列子day19-1.py

s=[1,‘zhangsan‘,‘lisi‘]
#s2是s的拷贝
s2=s.copy()
#打印s2和s是一样的
print(s2)
#修改s2
s2[0]=2
#打印s是未变的
print(s)
#打印s2因为修改了所以有变化
print(s2)

[1, ‘zhangsan‘, ‘lisi‘]
[1, ‘zhangsan‘, ‘lisi‘]
[2, ‘zhangsan‘, ‘lisi‘]

  假如修改的元素是一个列表,源列表也会发生变化day19-2.py

s = [[1,2],‘zhangsan‘,‘lisi‘]
s3=s.copy()
print(s3)
print(s)
s3[0][1]=3
#修改s3里面列表元素以后源列表也对应改变了
print(s3)
print(s)

[[1, 2], ‘zhangsan‘, ‘lisi‘]
[[1, 2], ‘zhangsan‘, ‘lisi‘]
[[1, 3], ‘zhangsan‘, ‘lisi‘]
[[1, 3], ‘zhangsan‘, ‘lisi‘]

  为什么会这样,因为第一次修改的是一个不可变元素对应的指针发生了变化,第二次s和s3指向的内存地址是一个可变的元素(列表)当列表发生改变,但是列表的内存地址没有改变s和s3的指向没有发生改变,所以修改s3的第一个元素列表对应的s的第一个元素列表也发生了改变。

  这就是浅拷贝,浅拷贝只拷贝第一层

以上是关于Python全栈day19(函数补充)的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈之路Day18

2018-06-20-Python全栈开发day19-生成器函数详解

Python全栈之路Day20

python全栈开发day37-css三种引入方式基础选择器高级选择器补充选择器

python全栈开发-Day8 函数基础

Python全栈-day8-day9