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(元组)