python-10

深浅拷贝:

 1 #
 2 #浅拷贝 copy()
 3 #
 4 a = [[1,2],3,4]
 5 b = a.copy()
 6 b[1] = 5
 7 b[0][0] = 7
 8 print(b)# [[7, 2], 5, 4]
 9 print(a)# [[7, 2], 3, 4]
10 # a与b为什么会这样呢?
11 # 1.浅拷贝只能拷贝一层的东西
12 # 2.将a的一层一模一样拷贝给b了
13 # 3.给b的非列表元素重新赋值的话,会在内存中新开辟内存空间,并将地址指向该新内存空间
14 # 4.但是给列表元素赋值的时候列表本身的指向是不变的,但是列表中的元素的指向如果被重新赋值,
15 # 指向虽然变了,但是列表本身的地址没变 所以a中列表元素的值也会从列表额地址中去找元素的值,所以导致a的值也被改变了
 1 #
 2 #深度拷贝 copy()
 3 #
 4 import copy
 5 a = [[1,2],3,4]
 6 b =copy.copy(a)      #等同于 a.copy()浅拷贝
 7 c =copy.deepcopy(a)  #深拷贝
 8 c[0][0] =8
 9 print(c) #[[8, 2], 3, 4]
10 print(a) #[[1, 2], 3, 4]
11 
12 #深度拷贝
13 #主要需要引入模块 import copy
14 #注意语法
 1 #
 2 #共享
 3 #
 4 a = [[1,2],3,4]
 5 b = a
 6 b[0][0] =8
 7 b[2] = 9
 8 print(b)    #[[8, 2], 3, 9]
 9 print(a)    #[[8, 2], 3, 9]
10 
11 # 这种直接赋值的方式为内存地址共享
12 # b并没有单独创建一个内存空间,而是共同引用a 的内存地址

 具体的函数知识点详情看链接:

http://www.cnblogs.com/yuanchenqi/articles/5828233.html

 

1 # 函数 与 变量值的修改
2 # 变量的调用不能在声明之前进行
3 # 局部的变量
4 # 在局部变量中定义一个全局变量的同名变量,程序会认为这个局部同名变量是一个新变量
5 # 如果要在局部变量中修改全局变量的话,需要用global 关键字声明该变量为全局变量
6 # 在函数体内部,如果对全局变量重新声明的话,必须要在调用该全局变量之前声明
1 count =10
2 def d():
3     count= 20
4     print(count)
5 d() # 20
6 print(count)    # 10
1 count =10
2 def d():
3     print(count)
4     global count
5     count= 20
6     print(count)
7 #该程序执行会报错

 

转载于:https://www.cnblogs.com/neilyoung22/p/9195948.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值