第十天-初识函数
程序员文章站
2022-03-13 19:19:41
# 函数: # 对代码块的封装和定义# 函数名的命名规则和使用和变量基本一样. # 定义:# def 函数名(参数列表):# 函数体……# 调用:# 函数名(具体值) 1 def day(): 2 print("起床") 3 print("早餐") 4 print("上课") 5 print("午餐... ......
# 函数:
# 对代码块的封装和定义
# 函数名的命名规则和使用和变量基本一样.
# 定义:
# def 函数名(参数列表):
# 函数体……
# 调用:
# 函数名(具体值)
1 def day(): 2 print("起床") 3 print("早餐") 4 print("上课") 5 print("午餐") 6 print("午休") 7 print("温习") 8 print("训练") 9 print("晚餐") 10 print("码字") 11 print("预习") 12 print("睡觉") 13 14 day() # 执行函数体
# return 语句 :
# 终止函数的运行 返回值 谁调用就返回给谁
1 def yue(): 2 print("拿出手机") 3 print("打开陌陌") 4 # return 5 print("找个漂亮的妹子") 6 print("问她, 约不约啊?") 7 print("ok. 走你!") 8 # return "萝莉" 9 return "萝莉","少妇","大妈" 10 11 # 函数什么都不写.不写return,函数在运行的结尾.返回一个none 12 set = yue() 13 print(set) # 没有return 调用返回none 14 15 # 写了return.但是return后面什么都没有.表示返回none 16 set = yue() 17 print(set) # 有return 但没有值 返回 none 18 19 # 写了return,后面有一个值,有一个返回值,返回给调用者 20 set = yue() 21 print(set) # 有return有一个值 返回值"萝莉" 22 23 # 写了return,后面有多个值,有多个返回值,返回给调用者(接收一个tuple) 24 set = yue() 25 print(set) # return多个值,返回多个值('萝莉', '少妇', '大妈')
# 函数参数:
# 形参:函数在声明时写的变量 声明
# 实参:函数在调用时给形参的具体值 调用
# 传参:把实参赋值给形参的过程
1 def mai(yan): 2 print("老板给我来包%s"%yan) 3 return "给你" 4 5 mai("中华") # 调用函数 6 a = mai("玉溪") # yan 形参,玉溪 实参,把玉溪赋值给yan的过程叫传参 7 print(a) # return有值 返回值的内容 8 b = mai("娇子") 9 print(b)
# 参数分类:
# 形参和实参. 个数要一一对应
# 形参:在函数声明的时候
# 1.位置参数
# 2.默认值参数
# 3.混合参数. 顺序(位置,默认值)
# 4.动态参数 *args **kwargs (明日内容)
# 实参:在函数调用的时候
# 1.位置参数 根据形参声明的位置来传递信息
# 2.关键字参数 根据形参声明的变量名来传递信息
# 3.混合参数 位置+关键字 顺序(先位置参数 后关键词参数)
1 # 位置参数 2 def chi(good_food,junk_food,drink,sweet): # 声明多个形参 3 print(good_food,junk_food,drink,sweet) 4 5 chi("大米饭","汉堡包","橙汁","哈根达斯") 6 7 # 形参实参个数要一一对应 8 def chi(good_food,junk_food,drink,sweet,xiaochi,lingshi,xiaochi1,lingshi1,shuiguo): # 声明多个形参 9 print(good_food,junk_food,drink,sweet) 10 11 chi("大米饭","汉堡包","橙汁","哈根达斯") # 报错,个数不对 12 # error: chi() missing 5 required positional arguments 13 14 def chi(good_food,junk_food,drink,sweet): 15 print(good_food,junk_food,drink,sweet) 16 17 #关键字参数必须按照形参的名字来传递信息 18 chi(good_food="大米饭",junk_food="汉堡包",drink="橙汁",sweet="哈根达斯") 19 chi(drink="橙汁",junk_food="汉堡包",good_food="大米饭",sweet="哈根达斯") # 可换顺序 20 21 # 混合参数必须先位置后默认值\关键字 22 # def chi(good_food,junk_food,drink ="橙汁",sweet): # 报错 顺序不对 23 def chi(good_food,junk_food,drink="橙汁",sweet="哈根达斯"): 24 print(good_food,junk_food,drink,sweet) 25 # 26 chi("大米饭","汉堡包") # 大米饭 汉堡包 橙汁 哈根达斯 27 chi("大米饭","汉堡包",drink="北冰洋",sweet="奶酪") # 大米饭 汉堡包 北冰洋 奶酪
# 默认值参数可帮我们省略重复代码
# 如:函数录入学生信息
1 def regist(id,name,age,gender="男"): 2 print(id,name,age,gender) 3 4 regist(1,"张三",20) # 1 张三 20 男 5 regist(2,"李四",23) # 2 李四 23 男 6 regist(3,"王二",25) 7 regist(4,"赵五",23) 8 regist(5,"李洁",21,"女")
# print,open也是函数(作了解)
1 # def print(self, *args, sep=' ', end='\n', file=none): 2 print(1,2,3,4,5,sep="_",end="不换行") # sep=下划线 1_2_3_4_5 3 print("你好") # end="不换行"1_2_3_4_5不换行你好 4 5 # def open(file, mode='r', buffering=none, encoding=none, errors=none, newline=none, closefd=true): 6 f = open("haha",encoding="utf-8") # mode='r' 7 content = f.read() 8 print(content) 9 f.close()
# 函数的应用-注册登录验证
1 # 注册 2 def regist(): 3 f = open("user", mode="r+", encoding="utf-8") # 避免重复打开文件 4 while 1: 5 username = input("请输入用户名:") 6 password = input("请输入密码:") 7 # f = open("user",mode="r+",encoding="utf-8") # 放这 若用户存在会重复打开文件 8 for line in f: 9 if username == line.strip().split(":")[0]: 10 print("用户名已存在!") 11 continue 12 13 else: 14 print("恭喜,注册成功!") 15 f.write("\n"+username+":"+password) 16 f.flush() 17 f.close() 18 return true 19 20 # regist() 21 22 23 # 登录验证 24 def login(): 25 f = open("user",encoding="utf-8") 26 auth_status = false 27 while not auth_status: 28 username = input("请输入账号:") 29 password = input("请输入密码:") 30 for line in f: 31 if username+":"+password == line.strip(): 32 auth_status = true 33 return auth_status 34 35 ret = login() 36 if ret: 37 print("登陆成功!") 38 else: 39 print("登陆失败!")