Python基础——函数进阶

一、函数的多个返回值

当函数段运行到return行的时候,函数会返回一个值,然后退出函数段,那么如果我想要函数能返回多个值该怎么办呢?

显然,写两个并列的return是不可以的,因为运行完第一个return时,函数就已经结束了,不会运行下一个return,所以正确的写法应该如下:

def test_return():
    return 1,2

x,y =test_return()
print(x) #返回结果1
print(y) #返回结果2

用“ ,”将两个返回值分割开,然后用两个变量分别接收就可以了,还可以用一个变量接收,系统会返回一个包含所有返回值的元组。

def test_return():
    r1 = '第一个返回值'
    r2 = '第二个返回值'
    r3 = '第三个返回值'
    return r1,r2,r3

s = test_return()
print(s)

此外,返回值的类型是不受限的,可以返回字符型,整形,布尔型等等。


二、函数参数的多种使用形式

1.位置参数

最常用的传递参数的方法,即实参顺序依据形参顺序来排列。

def user_info(name,gender,age):
    print(f'您的名字是{name},{gender}性,今年{age}岁')

user_info('小明','男','19')

2.关键字参数

通过“键=值”的方式传参,好处是消除了函数定义时的顺序要求。

def user_info(name,gender,age):
    print(f'您的名字是{name},{gender}性,今年{age}岁')

#关键字传参
user_info(name='小明',gender='男',age='19')
user_info(gender='男',age='19',name='小华')

3.缺省参数

也叫默认参数,函数调用时可以不提供这一参数,使用默认参数,但是缺省参数必须在位置参数定义完成以后,在最后定义。

def user_info(name,gender,age='19'):
    print(f'您的名字是{name},{gender}性,今年{age}岁')

user_info('小明','男','20') #自定义参数
user_info('小华','男') #使用默认参数

4.不定长参数

用于不确定会传入多少个参数的时候(也可以不传参)。

(1)所有参数都可以用*args来接收,然后根据参数传入的顺序用一个元组输出。

def user_info(*args):
    print(args)

user_info('Kiku')#输出('Kiku',)
user_info('Siri,Kiku')#输出('Siri','Kiku',)

(2)传入的参数用关键字形式表示,用**kwargs来接收,然后用一个字典输出。

def user_info(**kwargs):
    print(kwargs)

user_info(name='Kiku')#输出{'name': 'Kiku'}
user_info(name='Kiku',age='19')#输出{'name': 'Kiku', 'age': '19'}

三、匿名函数

1.函数作为参数传递

有时候不确定需要传入的参数是什么,需要用另一个函数对参数进行处理。

这个时候传入的参数应该是经过另一个函数处理后的参数,但此时我们并不知道这个参数是什么,这时我们可以将另一个函数作为参数传递。简单来说,这是一种计算逻辑的传递,而不是参数的传递。

def test_func(compute):#将compute函数作为参数传入
    result = compute(1,2)
    print(result)

def compute(x,y):
    return x+y

test_func(compute)#函数compute作为参数传入test_func中使用,输出3

2.lambda匿名函数

lambda关键字可以定义无名字的函数,有名称的函数可以多次使用,无名称的函数只能临时使用一次,使用lambda函数节省了内存中变量的定义,而且可以避免给函数取名浪费时间。

语法:lambda 传入参数:函数体(一行代码)

def test_func(compute):#将compute函数作为参数传入
    result = compute(1,2)
    print(result)

test_func(lambda x,y:x+y)#使用匿名函数代替compute函数

上例使用函数作为参数传递时,需要先定义compute函数,然后调用计算,比较麻烦,我们可以使用lambda关键字临时定义一个函数,优化了代码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值