Python笔记-函数的参数

1 位置参数和关键字参数

  • 根据函数定义的参数位置来传递参数,参数不能少;
  • 关键字参数必须置于位置参数之后,因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数。
def print_hello(name, sex):
    pass
print_hello('du', 1)
print_hello('du', sex = 1)
print_hello(name = 'du', sex = 1)
print_hello(sex = 1, name = 'du')
# 错误
print_hello(name = 'du', 1) 
  File "<ipython-input-85-0c54b0f6425d>", line 2
    print_hello(name = 'du', 1)
                            ^
SyntaxError: positional argument follows keyword argument

2 默认参数

  • 为参数提供默认值,调用函数时可传可不传该默认参数的值;
  • 注意:所有位置参数必须出现在默认参数前,包括函数定义和调用。
# 正确的默认参数定义方式--> 位置参数在前,默认参数在后
def print_hello(name, sex=1):
    pass

# 错误的定义方式
def print_hello(sex=1, name):
    pass

print_hello('du')
print_hello('du', 2)

3 可变参数

  • 当不确定参数个数时可用包裹位置参数,或者包裹关键字参数。

3.1 包裹packing与unpacking

    a = (1, 2, 3)
    a1, a2, a3 = a
    print("a1=%d, a2=%d, a3=%d" % (a1, a2, a3))

3.2 包裹位置传递

  • 传进的所有参数被args收集,然后组合为一个元组(tuple)
def func(*args):
    sum = 0
    for arg in args:
        sum += arg
    print(sum)

func()
func(1)
func(1, 2, 3)

3.3 包裹关键字参数

  • 传进的所有参数被kargs收集,然后组合为一个字典(dict键值对)
def func(**kargs):
    print(kargs)

func(a=1)
func(a=1, b=2, c=3)

4 混合应用

  • 先后顺序规则:位置参数、默认参数、包裹位置、包裹关键字
  • 包裹位置必须在包裹关键字之前
def func(name, age, sex=1, *args, **kargs):
    print(name)
    print(age)
    print(sex)
    print(args)
    print(kargs)
    print('------------------')

func('du', 25, 2, 'music', 'sport', good=2)
func('du', 25, 'music', 'sport', good=2) # 'music'传入给sex值,而‘sport’为参数args收集,组合为元组
def func1(x, *args, a=4, **kargs): # 没办法修改到默认参数a
    pass
def func2(x, a=4, *args, **kargs): # 传入的第二个参数为a
    pass

文章内容借鉴如下:
1、https://www.jianshu.com/p/c4c27db76f66
2、廖雪峰学习网站Python内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值