python之函数

本文详细探讨了Python中的函数特性,包括严格位置顺序的多个参数传递、关键词参数、参数默认值、返回字典数据、列表作为参数、接受任意数量参数的方法、递归函数的设计及其特点,以及局部变量与全局变量的区别。此外,还介绍了使用lambda表达式的匿名函数及其在filter()等场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*一、多个参数的传递–严格的位置顺序

#加法函数
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("芒果冰淇淋","香草,芒果")
结果:
这个 香草冰淇淋 配料如下
香草,芒果,葡萄干,奥利奥碎
这个 芒果冰淇淋 配料如下
香草,芒果

七、递归式函数设计
调用本身的动作称为递归
特点:

  1. 每次调用自己,会使范围越来越小
  2. 必现要有一个终止条件
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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值