定义方法 在函数内定义变量前 先用global声明该变量为全局变量 global 变量名 变量名 值 num 10 # 定义全局变量 def info(): age 10 # 定义局部变量 global name # 声明全局变量 name Andox info() print(name) # Andox注意 如果外面有同名的变量定义在该调用该函数之前 则在运行到该函数的全局声明是 会修改外面的函数如果外面没有定义同名的变量 如果想在外面使用 必须要在调用该函数之后才能使用该变量 六、拆包
# 1.对函数返回值进行拆包
def info():
high 175
weight 120
age 18
return high, weight, age
high, weight, age info() # 拆包
print(high, weight, age) # 175 120 18
# 2.对列表的拆包
a, b [1, 2]
print(a, b) # 1 2
# 3.对元祖的拆包
a, b (3, 4)
print(a, b) # 3 4
# 4.对字典的拆包 注意拆出来得到的是key
a, b { a : 1, b : 2}
print(a, b) # a b
七、引用
引用介绍
使用id()来查看数据储存在内存中的地址 变量名实际储存的是数据在内存中的地址
我们可以通过这边地址访问到储存在内存中的变量。而我们传递变量时 其实是把该变量
的引用 变量储存在内存中的地址 传递出去。
a 100
b [1, 2]
c (1, 2)
d { name : Andox }
print(id(a)) # 4321048320
print(id(b)) # 140495662574720
print(id(c)) # 140495643250240
print(id(d)) # 140495643211776
可变类型与不可变类型是指 如果能直接修改那么就是可变 否则是不可变
可变类型有 列表、字典、集合
不可变类型有 数字、字符串、元组
当变量为不可变类型时 对其修改 其实是把修改后的新数据地址 重新储存在该变量名中
当变量为可变类型时 对其修改 是在内存原来的位置进行修改
# 不可变类型 print(id(a)) # 4403084224 print(id(a)) # 4403084256 #修改后地址改变 # 可变数据类型 b [1] print(id(b)) # 140476780873152 b.append(2) print(id(b)) # 140476780873152 # 修改后地址不变八、函数案例-学生管理系统
import time
import os
# 定一个列表 用来存储所有的学生信息(每个学生是一个字典)
info_list []
def print_menu():
print( --------------------------- )
print( 学生管理系统 V1.0 )
print( 1:添加学生 )
print( 2:删除学生 )
print( 3:修改学生 )
print( 4:查询学生 )
print( 5:显示所有学生 )
print( 6:退出系统 )
print( --------------------------- )
def add_new_info():
添加学生信息
global info_list
new_name input( 请输入姓名: )
new_tel input( 请输入手机号: )
new_qq input( 请输入QQ: )
for temp_info in info_list:
if temp_info[ name ] new_name:
print( 此用户名已经被占用,请重新输入 )
return # 如果一个函数只有return就相当于让函数结束 没有返回值
# 定义一个字典 用来存储用户的学生信息(这是一个字典)
info {}
# 向字典中添加数据
info[ name ] new_name
info[ tel ] new_tel
info[ qq ] new_qq
# 向列表中添加这个字典
info_list.append(info)
def del_info():
删除学生信息
global info_list
del_num int(input( 请输入要删除的序号: ))
if 0 del_num len(info_list):
del_flag input( 你确定要删除么?yes or no )
if del_flag yes :
del info_list[del_num]
else:
print( 输入序号有误,请重新输入 )
def modify_info():
修改学生信息
global info_list
modify_num int(input( 请输入要修改的序号: ))
if 0 modify_num len(info_list):
print( 你要修改的信息是: )
print( name:%s, tel:%s, QQ:%s % (info_list[modify_num][ name ],
info_list[modify_num][ tel ], info_list[modify_num][ qq ]))
info_list[modify_num][ name ] input( 请输入新的姓名: )
info_list[modify_num][ tel ] input( 请输入新的手机号: )
info_list[modify_num][ qq ] input( 请输入新QQ: )
else:
print( 输入序号有误,请重新输入 )
def search_info():
查询学生信息
search_name input( 请输入要查询的学生姓名: )
for temp_info in info_list:
if temp_info[ name ] search_name:
print( 查询到的信息如下: )
print( name:%s, tel:%s, QQ:%s % (temp_info[ name ],
temp_info[ tel ], temp_info[ qq ]))
break
else:
print( 没有您要找的信息.... )
def print_all_info():
遍历学生信息
print( 序号t姓名tt手机号ttQQ )
for temp in info_list:
# temp是一个字典
print( %dt%stt%stt%s % (i, temp[ name ], temp[ tel ], temp[ qq ]))
def main():
用来控制整个流程
while True:
# 1. 打印功能
print_menu()
# 2. 获取用户的选择
num input( 请输入要进行的操作(数字) )
# 3. 根据用户选择,做相应的事情
if num 1 :
# 添加学生
add_new_info()
elif num 2 :
# 删除学生
del_info()
elif num 3 :
# 修改学生
modify_info()
elif num 4 :
# 查询学生
search_info()
elif num 5 :
# 遍历所有的信息
print_all_info()
elif num 6 :
# 退出系统
exit_flag input( 亲,你确定要退出么?~~~~( _ )~~~~(yes or no) )
if exit_flag yes :
break
else:
print( 输入有误,请重新输入...... )
# 程序的开始
main()



