函数定义:给代码段命名,实现一项具体的功能
他们给代码段命名,就跟变量给字符串或数字命名一样;
他们可以接受参数,就跟你的脚本接收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('{}|{}
'.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)