a =100print(f'全局变量:{a}')deftext():print(f'全局变量:{a}')deftext01():
a =200# 这是定义定义并初始化局部变量 a ,并不是对全局变量 a 的修改print(f'局部变量:{a}')
text()
text01()# 打印的是局部变量print(f'全局变量并没有被修改:{a}')deftext02():global a # 这个声明了这个 a 是全局变量 a
a =3000# 此时就是对全局变量的修改print(f'全局变量被修改了:{a}')
text02()print("--------------")
# 1.元组拆包defreturn_num():return100,200print(return_num())# 多个返回值,所以是元组类型
num1, num2 = return_num()print(num1, num2)"""
拆包完成 -- 把元组拆成一个个元素,但这样拆要注意,接收变量num1, num2...数目要和元组内元素数目相同
但这样拆要注意,接收变量num1, num2...数目要和元组内元素数目相同
"""# 2.字典拆包
dict1 ={'name':"张明志",'age':20,'gender':"男"}
a, b, c = dict1
print(a, b, c)# 把 key 赋给a, bprint(dict1[a], dict1[b], dict1[c])# 通过 key 查找 value 值并打印,字典不支持下标# 这也是一种拆包
t1 =(100,200,300,400)
a, b, c, d = t1
print(a, b, c, d)
九、函数中的引用Ⅰ
# 一.变量交换
a, b =20,100print(a, b)
a, b = b, a # 非常简单print(a, b)print("======================")# 二.“引用”的解释 -- 类比C语言中的指针"""
1.不可变数据类型的引用
"""
a =1
b = a
print(id(a),id(b))# 十进制地址值print(a, b)
a =2# 这里会开辟一个新的存储空间,即整型是不可变类型 --不能把某一地址对应的存储空间里的整型数据直接修改print(id(a),id(b))print(a, b)print("======================")"""
2.可变数据类型的引用
"""
aa =[1,2,3,4,5,6]
bb = aa
print(id(aa),id(bb))print(aa, bb)
aa.append(100)print(aa, bb)print(id(aa),id(bb))
十、函数中的引用Ⅱ
deftext01(a):print(a)print(id(a))
a += a
print(a)print(id(a))print("============")
b =100# 整型,不可变类型
text01(b)
c =[10,20,30]
text01(c)"""
可变类型:
列表
字典
集合
不可变类型:
整型
浮点型
字符串
元组
"""
十一、函数综合举例
defprint_info():print("请选择功能:")print("1.添加学员")print("2.删除学员")print("3.恢复刚才删除的数据")print("4.修改学员")print("5.查询学员")print("6.显示所有学员")print("7.退出系统")print("------------------")
info_list =[]# 存储所有学员信息defadd_info():# 此函数用于输入学员信息"""添加学员函数"""# 输入并临时存储单个学员信息
new_id =input('请输入学号:')
new_name =input('请输入姓名:')
new_tel =input('请输入手机号码:')
info_dict ={'id': new_id,'name': new_name,'tel': new_tel}# 检验学员信息是否重复
text =Trueglobal info_list
for i in info_list:if(i['id']== info_dict['id'])or(i['tel']== info_dict['tel']):print("添加信息已经存在!请重新添加!")
text =False
add_info()breakif text:
info_list.append(info_dict)# 不重复则添加
deleted ={}
deleted_index =0defdel_info():"""删除学员函数"""
del_num =input('请输入需要删除的学员的<学号>:')global info_list
global deleted
global deleted_index
for i in info_list:if i['id']== del_num:
deleted = i # 先保存需要的删除数据及其下标
deleted_index = info_list.index(i)
info_list.remove(i)breakelse:print("您想要删除的数据不存在!")defundel_info():"""恢复学员函数"""global info_list
info_list.insert(deleted_index, deleted)defmodify_info():"""修改学员函数"""global info_list
sign =False
modify_id =input("请输入需要修改的学员的学号:")for i in info_list:if i['id']== modify_id:whileTrue:
sign =input("a:修改学号,b:修改姓名,c:修改号码,d:保存并退出")if sign =='a':
i['id']=input("修改后学号:")elif sign =='b':
i['name']=input("修改后姓名:")elif sign =='c':
i['tel']=input("修改后号码:")elif sign =='d':
sign =Truebreakelse:print("无效字母!")if sign:breakelse:print("您想要修改的数据不存在!")defsearch_info():"""查询学员函数"""global info_list
search_id =input("请输入需要查询的学员的学号:")for i in info_list:if i['id']== search_id:print(f"学号:{i['id']}, 姓名:{i['name']}, 号码:{i['tel']}")breakelse:print("查询的学员不存在!")defprint_all():"""显示所有成员"""global info_list
print("学号\t姓名\t号码")for i in info_list:print(f"{i['id']}\t{i['name']}\t{i['tel']}")
print_info()# 打印操作提示whileTrue:
user_num =int(input("请输入序号:"))if user_num ==1:# 添加学员
add_info()print(info_list)elif user_num ==2:# 删除学员
del_info()print(info_list)elif user_num ==3:# 恢复刚才删除的学员
undel_info()print(info_list)elif user_num ==4:# 修改学员
modify_info()print(info_list)elif user_num ==5:# 查询学员
search_info()elif user_num ==6:# 显示所有学员
print_all()elif user_num ==7:print('退出系统')breakelse:print("输入序号有误!请重新输入!")