4.4 Python参数收集和逆向参数收集

4、参数收集和逆向参数收集

1)参数收集

(1)*参数

说明:

  • 在形参前面添加一个星号(*),意味着该参数可接受多个参数值
  • Python 将传给带 * 参数的多个值收集成一个元组
  • Python 允许参数收集的形参位于形参列表的任意位置,但只能带一个支持“普通”参数收集的形参
  • 若支持“普通”参数收集的形参位于前面,后面的参数则需要使用关键字参数传值
def test(num, *books):
    print('num:', num)
    print('books:', books)
    
print(3, 'python', 'java', 'c')

num: 3
books: (‘python’, ‘java’, ‘c’)

def test(*books, num):
    print('books:', books)
    print('num:', num)
    
test('python', 'java', 'c', num=3)

books: (‘python’, ‘java’, ‘c’)
num: 3

(2)**参数

说明:

  • 在参数前面添加两个星号(**), 该参数支持关键字参数收集,收集的参数别当成 dict 处理
  • 一个函数可同时支持普通参数收集和关键字参数收集
def test(num, *books, **scores):
    print('num:', num)
    print('books:', books)
    print('scores:', scores)
    
test(3, 'python', 'java', 'c', py=90, ja=80)

num: 3
books: (‘python’, ‘java’, ‘c’)
scores: {‘py’: 90, ‘ja’: 80}

def test(*books, num, **scores):
    print('books:', books)
    print('num:', num)
    print('scores:', scores)
    
test('python', 'java', 'c', num=3, py=90, ja=80)

books: (‘python’, ‘java’, ‘c’)
num: 3
scores: {‘py’: 90, ‘ja’: 80}

2)逆向参数收集

说明:在列表、元组前添加 *,在字典前添加 **。

def test(a, b):
    print(a)
    print(b)

vals_1 = (10, 20)

# 调用函数时,Python 不会对元组自动解包(默认情况下,元组是一个整体)
# * 对元组进行解包(逆向参数收集)
test(*vals_1)

10
20

# * 对列表进行解包
vals_2 = [10, 20]
test(*vals_2)

10
20

# ** 对字典解析成关键字参数
vals_3 = {'a':10, 'b':20}
test(**vals_3)

10
20

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值