初识函数
函数定义:给代码段命名,实现一项具体的功能
他们给代码段命名,就跟变量给字符串或数字命名一样;
他们可以接受参数,就跟你的脚本接收argv一样
可以创建脚本和命令
函数的基本结构:
def 函数名(): def定义函数关键字,函数名必须符合定义变量规则;括号中可以放参数或为空;必修以冒号分开与函数体
函数说明
函数体
函数的优点:
1.减少代码的重复率
2.增强代码的阅读性
函数最主要的目的:封装一个功能。
函数的返回值rutern
1.在函数体中遇到return则结束执行函数,在函数体return下面的内容将不执行。
2.return给函数执行者返回值
return中返回值的几种方式:
1.返回为None
1 def my_sum (): 2 a= 1 3 b =2 4 c =a+b 5 return 6 print(my_sum()) # 整体是函数的执行者。
2.返回单个元素值 原样返回
1 def my_sum (): 2 a= 1 3 b =2 4 c =a+b 5 return c 6 print(my_sum())
3.返回多个元素值 返回一个有元素组成的元祖
def my_sum (): a= 1 b =2 c =a+b return a,b,c print(my_sum())
工作中,函数中尽量不要出现print
函数的传参:
实参(函数执行者括号中的参数)
位置参数 按照顺序,一一对应
关键字参数 可以不按照顺序,但是必须一一对应
混合参数 关键字参数一定要在位置参数后面
形参(函数定义中括号的参数)
位置参数 按照顺序,一一对应
默认参数
实参
位置参数 按照顺序,一一对应
1 def sum (x,y): 2 c = x+y 3 return c 4 print(sum(18,56))
关键字参数,可以不按顺序,但是必须一一对应
1 def sum (x,y): 2 sum1= x+y 3 return sum1,x,y 4 print(sum(y=88,x=12))
三元运算:只针对于简单的if else 这样的结构,才可以使用。
比较两个数的大小
1 def big (x,y): 2 return x if x>y else y 3 print(big(45,78))
混合传参: 关键字参数一定要在位置参数后面
1 def hun (a,b,c,d,e,f): 2 return a,b,c,d,e,f 3 print(hun(1,2,3,4,e=7,f=8)) 4 5 def hun (a,b,c,d,e,f): 6 return a,b,c,d,e,f 7 print(hun(e=7,f=8,1,2,3,4)) #会报错SyntaxError: positional argument follows keyword argument
形参角度
位置参数 按照顺序,一一对应
默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值
应用场景:不经常改变的参数,但是一直在用。
位置参数
1 def func(x,y,z): 2 print(x,y,z) 3 func(1,2,3)
默认参数
1 def func(x,y='女'): 2 return x,y 3 print(func('林树辉')) #这里可以只传递一个参数,另一个使用默认参数
常见错误
在形参中默认参数若果是一个可变数据类型(list,dic)时,默认的参数会随着内容的增加而发生变化
默认参数若是可变的数据类型,他始终使用的是一个
1 def func (x= [],y=[]): 2 y.append(x) 3 return x,y 4 print(func(['a'],['b'])) 5 print(func(['d'],['c']))
定义一个函数
函数的功能为录入人员信息,并将内容写入文件
1 def input_list(name,age="18"): 2 with open('info.txt','a',encoding='gbk') as f: 3 f.write("{}|{}".format(name,age)) 4 while 1: 5 name = input('输入姓名:').strip() 6 age = input('输入年龄').strip() 7 if name.upper() == "Q" or age=='Q': 8 break 9 if not age: 10 input_list(name,age) 11 else: 12 input_list(name)
函数的功能为录入人员信息,并将内容写入文件
1 def namelist(n1,s1='男'): 2 with open('namelist',encoding='utf-8',mode='a') as f1: 3 f1.write('{}|{}\n'.format(n1,s1)) 4 5 while 1: 6 name,sex = input('请输入姓名,性别:以 ,隔开').strip().replace(',',',').split(',') 7 if name.upper() == 'Q':break 8 if sex.strip(): 9 namelist(name,sex) 10 else: 11 namelist(name)