签到成功

知道了

CNDBA社区CNDBA社区

Python第12天--引用

2021-11-05 09:07 986 0 原创 Python
作者: hbhe0316

一、引用简介http://www.cndba.cn/hbhe0316/article/5031

  1. python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象——相当于通过“传值’来传递对象。
    2.当人们复制列表或字典时,就复制了对象列表的引用同,如果改变引用的值,则修改了原始的参数。
    3.为了简化内存管理,Python通过引用计数机制实现自动垃圾回收功能,Python中的每个对象都有一个引用计数,用来计数该对象在不同场所分别被引用了多少次。每当引用一次Python对象,相应的引用计数就增1,每当消毁一次Python对象,则相应的引用就减1,只有当引用计数为零时,才真正从内存中删除Python对象。

二、不可变数据类型的引用
不可变数据类型包括字符串String、浮点型Float、整型Int、元祖Tuple。http://www.cndba.cn/hbhe0316/article/5031

2.1 字符串

a='1234'
b=a
a='hello'
print('a:',a) #a:hello
print('b:',b)  #b:1234
#查看内存地址
print('a的内存地址是:',id(a))
print('a的内存地址是:',id(b))


2.2 浮点型

#2.浮点型引用
x=3.14
y=x
x=9.88
print('x:',x)
print('y:',y)
print('x的内存地址是:',id(x))
print('y的内存地址是:',id(y))

2.3 元祖
元祖虽然是序列,且包含多个元素,但是不支持原处修改,如tuple[1]=1是非法的。

#3.元祖引用
tuple1=(1,2,3,4,5)
tuple2=tuple1
tuple1=('tuple','hello')
print('tuple1:',tuple1)
print('tuple2:',tuple2)
print('tuple1的内存地址是:',id(tuple1))
print('tuple2的内存地址是:',id(tuple2))

http://www.cndba.cn/hbhe0316/article/5031

三、可变数据类型的引用
可变数据类别包括列表、字典

3.1 列表的引用http://www.cndba.cn/hbhe0316/article/5031

#4 列表的可变引用
list1=[1,2,3,4,5]
list2=list1
list1[3]='list'
print('list1------%s'%list1)
print('list2------%s'%list2)
print('list1的内存地址是:',id(list1))
print('list2的内存地址是:',id(list2))

http://www.cndba.cn/hbhe0316/article/5031http://www.cndba.cn/hbhe0316/article/5031

函数的传递引用http://www.cndba.cn/hbhe0316/article/5031http://www.cndba.cn/hbhe0316/article/5031

def eggs(someParameter):
    someParameter.append('hello list')
spam = [1, 2, 3, 4]
eggs(spam)
print(spam)


3.2 字典的引用

http://www.cndba.cn/hbhe0316/article/5031

a={'name':'Cathy','age':'27','job':'coder'}
b=a
a['age']='30'
b['name']='Bob'
print('a======%s'%a)
print('b======%s'%b)
print('a的内存地址是:', id(a))
print('b的内存地址是:', id(b))

http://www.cndba.cn/hbhe0316/article/5031

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1039100次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ