python 引用

作者:原创时间:2022-03-12
文档

python引用有哪些?来和小编一起解读一下吧~

python不允许程序员用传值和传引用,可以选择选用“传对象引用”的方式,这种方式等同于将传值和传引用综合起来,如果函数收到的是一个可变对象的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象,如果函数收到的是一个不可变对象的引用,就不能直接修改原始对象,相当于通过“传值’来传递对象。

python引用主要有:不可变数据引用和可变数据引用,其中不可变数据引用包括:字符串String、浮点型Float、元祖Tuple。

1、字符串String

#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))
结果是:
a: hellob: 1234a的内存地址是: 1651738050720a的内存地址是: 1651737219456
分析:b的值指向a的值。python开辟了新的内存空间给b,所以a和b的内存地址不一样。

2、浮点型Float

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

3、元祖Tuple

元祖虽然是序列,且包含多个元素,但是不支持原处修改,如tuple[1]=1是非法的。#3.元祖引用
t1=(1,2,3,4,5)
t2=t1
t1=('tuple','hello')
print('t1:',t1)
print('t2:',t2)
print('t1的内存地址是:',id(t1))
print('t2的内存地址是:',id(t2))
结果是:
t修改后为: (1, 2, 3, ['x', 'a', 'D', 'b'])

可变数据引用包括:列表引用、字典引用、函数的传递引用

1、列表引用

#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))
结果是:
list1=====[1, 2, 3, 'list', 5]list2=====[1, 2, 3, 'list', 5]list1的内存地址是: 2769992249864list2的内存地址是: 2769992249864

2、函数的传递引用

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

3、字典引用

#5 字典的引用
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))
结果是:
a======{'name': 'Bob', 'age': '30', 'job': 'coder'}
b======{'name': 'Bob', 'age': '30', 'job': 'coder'}
a的内存地址是: 2510825602792
b的内存地址是: 2510825602792

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
idea的maven配置 maven安装配置 java filereader java stream java random java lambda java hashmap java foreach java final java json java 泛型 python range函数 linux ftp js 字符串转数字 电脑忘记开机密码怎么办 两个二维码怎么拼一起 怎样查看微信删除的聊天记录 微信扫码不能扫了怎么办 微信恢复删除的聊天记录 拼多多拒收在哪里操作 js数组遍历方法 js json对象 js 遍历json java concat python调用dll python strip函数 python configparser模块 oracle coalesce rstudio使用教程 mysql去重复 保留一条 js set方法 python中get函数用法 java get和set方法 object转bigdecimal object 转list python 交集 js读取文件 linux 格式化u盘 deque java java process