【Python】函数参数收集

本文深入解析了Python中不同类型的参数传递方式,包括可变参数、关键字参数及逆向参数收集,通过实例展示了如何灵活运用这些参数特性。

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

1.Python允许在形参前面添加一个星号(*),这样就意味着该参数可接收多个参数值,多个参数值被当成元组传入。

def test(a,*books):
    print(books)
    for b in books:
        print(b)
    print(a)

test(5,"疯狂IOS讲义","疯狂Python讲义")

运行上面的代码,可以看到如下结果:

("疯狂IOS讲义","疯狂Python讲义")
疯狂IOS讲义
疯狂Python讲义
5

2.正常情况下Python形参中最多只能有一个带“*”参数和一个带“**”参数,带“*”参数收集成元组。带“**”参数收集成字典,且采用关键字参数形式。

def test(x,y,z=3,*books,**scores):
    print(x,y,z)
    print(books)
    print(scores)

test(1,2,3,"疯狂IOS讲义","疯狂Python讲义",语文=89,数学=94)

调用函数时,实参中的1,2,3会传给普通参数x,y,z;接下来的两个字符串会由books收集为元组;最后的两个关键字参数会被收集成字典。运行上面的代码,会得到如下结果:

1,2,3
("疯狂IOS讲义","疯狂Python讲义")
{"语文":89,"数学":94}

3.逆向参数收集

  • 逆向参数收集是指在程序已有列表、元组、字典等对象的前提下,把他们的元素拆开后传给函数的参数。
  • 逆向参数收集需要在传入的列表、元组参数之前添加一个星号,在字典参数之前添加两个星号。
def test(name,message):
    print("用户:",name)
    print("欢迎消息:",message)

my_list = ["孙悟空","欢迎来到疯狂软件"]
test(*my_list)
  • 即使是支持收集的参数,如果程序需要将一个元组传给该参数,那么同样需要使用逆向收集。
def foo(name,*nums):
    print("name参数:",name)
    print("nums参数:",nums)

my_tuple = (1,2,3)
foo("fkit",*my_tuple)

运行结果为:

name参数:1
nums参数:(1,2,3)

如果不使用逆向收集,整个元组将会作为一个参数,而不是将元组的元素作为多个参数,例如按照以下方式调用foo函数:

foo(my_tuple)

运行结果为:

name参数:(1,2,3)
nums参数:()

my_tuple整体作为参数值传给name参数。

  • 字典也支持逆向收集,字典将会以关键字参数的形式传入。
def bar(book,price,desc):
    print(book,"这本书的价格是: ",price)
    print("描述信息",desc)

my_dict = {"price":89,"book":"疯狂Python讲义","desc":"这是一本系统全面的Python学习图书"}
bar(**my_dict)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值