list、tuple、set和dict传参机制

 1、list、tuple、set和dict传参机制

# -------------list-------------
def f1(my_list):
    print(f"②f1()my_list:{my_list} 地址是:{id(my_list)}") # ["tom","mary","hsp"] 0x1122
    my_list[0]="jack"
    print(f"③f1()my_list:{my_list} 地址是:{id(my_list)}") # ["jack","mary","hsp"] 0x1122

# 测试
my_list=["tom","mary","hsp"]
print(f"①f1()my_list:{my_list} 地址是:{id(my_list)}")  # ["tom","mary","hsp"] 0x1122
# 调用函数
f1(my_list)
print(f"④f1()my_list:{my_list} 地址是:{id(my_list)}")  # ["jack","mary","hsp"] 0x1122

print("="*60)
# -------------tuple-------------
def f2(my_tuple):
    print(f"②f2()my_tuple:{my_tuple} 地址是:{id(my_tuple)}") #("hi","ok","hello") 0x1122
    # 不能修改
    # my_tuple[0]="red"
    print(f"③f2()my_tuple:{my_tuple} 地址是:{id(my_tuple)}") #("hi","ok","hello") 0x1122

#测试
my_tuple=("hi","ok","hello")
print(f"①f2()my_tuple:{my_tuple} 地址是:{id(my_tuple)}") #("hi","ok","hello") 0x1122
f2(my_tuple)
print(f"④f2()my_tuple:{my_tuple} 地址是:{id(my_tuple)}") #("hi","ok","hello") 0x1122

print("="*60)
# -------------set-------------
def f3(my_set):
    print(f"②f3()my_set:{my_set} 地址是:{id(my_set)}") #{"水浒","西游","三国"} 0x1122
    my_set.add("红楼梦")
    print(f"③f3()my_set:{my_set} 地址是:{id(my_set)}") #{"水浒","西游","三国","红楼梦"} 0x1122

# 测试
my_set={"水浒","西游","三国"}
print(f"①f3()my_set:{my_set} 地址是:{id(my_set)}") #{"水浒","西游","三国"} 0x1122
f3(my_set)
print(f"④f3()my_set:{my_set} 地址是:{id(my_set)}") #{"水浒","西游","三国","红楼梦"} 0x1122

print("="*60)
# -------------dict-------------
def f4(my_dict):
    print(f"②f4()my_dict:{my_dict} 地址是:{id(my_dict)}") #{"name":"小明","age":18} 0x1122
    my_dict['address']="兰若寺"
    print(f"③f4()my_dict:{my_dict} 地址是:{id(my_dict)}") #{"name":"小明","age":18,"address":"兰若寺"} 0x1122

# 测试
my_dict={"name":"小明","age":18}
print(f"①f4()my_dict:{my_dict} 地址是:{id(my_dict)}") #{"name":"小明","age":18} 0x1122
f4(my_dict)
print(f"④f4()my_dict:{my_dict} 地址是:{id(my_dict)}") #{"name":"小明","age":18,"address":"兰若寺"} 0x1122

2、结论及示意图

1)tuple(元组):是不可变数据类型,不能修改

2)list(列表)、set(集合)和dict(字典)是可变数据类型,当对应的变量的值发生了变化时,它对应的内存地址不会发生改变

3)针对f1()函数的调用,画出示意图

3、小结

1)Python数据类型主要有整数int / 浮点数float / 字符串str / 布尔值bool / 列表list / 元组tuple / 集合set / 字典dict 

2)数据类型分为两大类:可变数据类型、不可变数据类型

3)可变数据类型和不可变数据类型

  • 可变数据类型:当该数据类型的变量的值发生了变化,如果它的内存地址不变,那么这个数据类型就是可变数据类型
  • 不可变数据类型:当该数据类型的变量的值发生了变化,如果它的内存地址改变了,那么这个数据类型就是不可变数据类型

4)Python的数据类型

可变数据类型:list(列表)、set(集合)、dict(字典)

不可变数据类型:数值类型(int、float)、bool(布尔)、string(字符串)、tuple(元组)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值