Python中函数的参数

目录

前言

一、必传参数

二、默认参数

三、可变参数

总结


前言

在python函数中有三种参数,分别是必传参数、默认参数和可变参数,下面将分别介绍这三种参数和相应的用法。


一、必传参数

在python函数定义中,有些参数是必须要传入的,如果不传入那么程序就会报错,就像下面这样:

def add(a, b):
    return a + b

result = add()
print(result)

>>add() missing 2 required positional arguments: 'a' and 'b'

 报错信息是“缺少两个位置参数”,其实位置参数就是必传参数,我们给相应的参数传入,这样就不会报错了。

def add(a, b):
    return a + b

result = add(a = 1, b = 2)
print(f'result = {result}')

>>result = 3

二、默认参数

def add(a, b = 2):
    return a + b

result = add(a = 1)

>>result = 3

请看上面的代码,函数传入了两个参数,其中一个参数b给了初始值,下面我们调用函数时,对给了初始值的参数b并不需要传值进去,当然你是可以继续传值进去的,那么b将按照你传入的值进行赋予。

def add(a, b = 2):
    return a + b

result = add(a = 1, b = 3)
print(f'result = {result}')

>>result = 4

三、可变参数

现在请思考一个问题,假如我们函数定义中有10个,或者更多的参数需要传入,那么我们是不是还是按照下面这样的方式呢?

def test(a, b, c, d, e, f, g, h, i.....):
    ......

 答案显然是不会采用这种方式传参,这样看着就不简洁而且效率也低,那么python函数定义中有一种可变参数的传参,这样的传参方式既简洁又高效。

def test(*args, **kwargs):
    ......

 上述程序中,

        *args:将无参数的值合并成元组

        *kwargs:将有参数与默认值的赋值语句合并成字典

看着有点抽象,我们看个具体的例子就能很好理解了,

def test(*args, **kwargs):
    print(args)
    print(kwargs)

test(1, 2, 3, city = 'shanghai')

>>(1, 2, 3)
>>{'city' : 'shanghai'}

 上面的操作有时候也会叫做打包。有一点需要注意,那就是*args和**kwargs的相对位置不能变,如果改变位置的话,那就会报错了。

def test(**kwargs, *args):
    print(args)
    print(kwargs)

test(1, 2, 3, city = 'shanghai')

>>SyntaxError: invalid syntax

当然我们也能直接传元组参数和字典参数的,这个又称为解包,

def test(*args, **kwargs):
    print(args)
    print(kwargs)
a_ = (1, 2)
b_ = {'city' : 'shanghai'}
test(*a_, **b_)

>>(1, 2)
>>{'city' : 'shanghai'}

当然当然,传参的相对位置也是不能变的,不然也是会报错的吖。 


总结

参数之间还有很多种排列顺序,如果大家感兴趣可以排列组合编辑一遍,看哪些会报错哪些不会报错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值