*一、多个参数的传递–严格的位置顺序
#加法函数
def subtract(x1,x2):
result=x1+x2
print(result)
a=int(input("a="))
b=int(input("b="))
print("a + b =",end=" ")
subtract(a,b)
结果:
a=8
b=9
a + b = 17
二、关键词参数 参数名称=值
def addtion(x1,x2):
result=x1-x2
print(result)
**# 明确指向 哪个参数赋哪个值,因此跟位置无关**
addtion(x2=4,x1=6)
结果:
2
三、参数默认值的处理
def addtion(x1,x2=4):
result=x1-x2
print(result)
addtion(2)
结果:-2
四、函数返回值
1、返回多个数据的应用
#一个函数传入两个参数,对该参数进行 加、减、乘、除
def mfunction(x1,x2):
add=x1+x2
sub=x1-x2
mul=x1*x2
divre=x1/x2
return add,sub,mul,divre
x1=x2=10
add,sub,mul,divre=mfunction(x1,x2)
print("加法:",add)
print("减法:",sub)
print("乘法:",mul)
print("除法:",divre)
结果:
加法: 20
减法: 0
乘法: 100
除法: 1.0
2、函数返回字典数据
建立一个编号,姓名的字典,如果输入有电话号码则电话号码显示,如果不输入则不显示
def build_vip(id,name,tel=''):
dict_vip={"Vip_id":id,"Name":name}
**if tel:
dict_vip['Tel']=tel**
return dict_vip
member1=build_vip(2,'aa')
member2=build_vip(2,'aa',123)
print(member1)
print(member2)
结果:
{'Vip_id': 2, 'Name': 'aa'}
{'Vip_id': 2, 'Name': 'aa', 'Tel': 123}
3,、2题拓展,增加循环
#建立储存VIP会员信息的函数,如果电话号码为空,则不显示在字典里
def build_vip(id,name,tel=''):
dict_vip={"VIP_ID":id,"Name":name}
if tel:
dict_vip["Tel"]=tel
return dict_vip
while True:
id=input("请输入ID:")
name=input("请输入姓名:")
tel=input("请输入电话号码:")
member=build_vip(id,name,tel)
repeat=input("是否要继续 y/n")
if repeat != 'y':
break
print(member)
print("欢迎下次使用")
结果:
{'VIP_ID': '3', 'Name': 'c', 'Tel': '333'}
五、调用函数时参数是列表
列表作为参数传递给函数,函数会遍历列表
六、传递任意数量的参数
1、"*"表示有多个参数传递到这个函数内
def make_icecream(iceram_type,*tappings):
print("这个",iceram_type,"配料如下")
for tapping in tappings:
print(tapping)
make_icecream("香草冰淇淋","香草,芒果,葡萄干,奥利奥碎")
make_icecream("芒果冰淇淋","香草,芒果")
结果:
这个 香草冰淇淋 配料如下
香草,芒果,葡萄干,奥利奥碎
这个 芒果冰淇淋 配料如下
香草,芒果
七、递归式函数设计
调用本身的动作称为递归
特点:
- 每次调用自己,会使范围越来越小
- 必现要有一个终止条件
def factroial(n):
#计算n的阶乘,n必须是正整数
if n==1:
return 1
else:
return n*factroial(n-1)
value=factroial(3)
print(value)
结果:6
八、局部变量与全局
局部变量:范围限定在这个函数内
全局变量:变量的影响范围是整个程序
如果在全局变量与函数内的局部变量使用相同的名称,那么在局部变量所在的函数使用局部变量的内容,其他区域则使用的是全局变量的内容
def printmsg():
msg="Hello"
print(msg)
msg=111
printmsg()
print(msg)
结果:
Hello
111
九、匿名函数 lambda
1、函数lambda的语法
product=lambda x,y:x*y
print(product(5,10))
2、匿名函数使用与filter()
1>使用基本函数
#函数功能筛选 数字是否为奇数,是奇数的话返回
def oddfn(x):
return x if x%2==1 else None
#数字列表
mylist=[5,10,15,20,25,30]
#函数oddfn,对列表mylist反复执行
filter_object=filter(oddfn,mylist)
#将筛选的新对象,遍历返回
J_list=[item for item in filter_object]
print("奇数列表为:",J_list)
结果:
奇数列表为: [5, 15, 25]
2>使用匿名函数
mylist=[5,10,15,20,25,30]
addlist=list(filter(lambda x:(x%2==1),mylist))
print("奇数列表:",addlist)
结果:奇数列表: [5, 15, 25]