栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

儿童python教程124:Python逆向参数收集详解(进阶必读)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

儿童python教程124:Python逆向参数收集详解(进阶必读)

所谓逆向参数收集,指的是在程序己有列表、元组、字典等对象的前提下,把它们的元素“拆开”后传给函数的参数。逆向参数收集需要在传入的列表、元组参数之前添加一个星号,在字典参数之前添加两个星号。例如如下代码:

def test(name, message):

    print("用户是: ", name)

    print("欢迎消息: ", message)

my_list = ['小明', '欢迎来考高分网']

test(*my_list)
运行结果为:

用户是:  小明
欢迎消息:  欢迎来考高分网

程序中定义了一个需要两个参数的函数,而 my_list 列表包含两个元素,为了让程序将 my_list 列表的两个元素传给 test() 函数,程序在传入的 my_list 参数之前添加了一个星号。

实际上,即使是可变参数,如果程序需要将一个元组传给该参数,那么同样需要使用逆向收集。例如如下代码:

def foo(name, *nums):

    print("name参数: ", name)

    print("nums参数: ", nums)

my_tuple = (1, 2, 3)

# 使用逆向收集,将my_tuple元组的元素传给nums参数

foo('fkit', *my_tuple)
上面程序中,调用将‘fkit’传给 foo() 函数的 name 参数,然后使用逆向收集将 my_tuple 包含的多个元素传给 nums 参数,nums 再将 my_tuple 的多个元素收集成元组。

运行上面代码,将看到如下输出结果:

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


此外,也可使用如下方式调用 foo() 函数:

# 使用逆向收集,将my_tuple元组的第一个元素传给name参数,剩下参数传给nums参数

foo(*my_tuple)
此时程序会对 my_tuple 进行逆向收集,其中第一个元素传给 name参数,后面剩下的元素传给 nums 参数。运行上面代码,将看到如下输出结果:

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


如果不使用逆向收集(不在元组参数之前添加星号),整个元组将会作为一个参数,而不是将元组的元素作为多个参数。例如按如下方式调用 foo() 函数:

# 不使用逆向收集,my_tuple元组整体传给name参数

foo(my_tuple)
上面调用没有使用逆向收集,因此 my_tuple 整体作为参数值传给 name 参数。运行上面代码,将看到如下输出结果:

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


字典也支持逆向收集,字典将会以关键字参数的形式传入。例如如下代码:


def bar(book, price, desc):

    print(book, "VIP价格是:", price)

    print('描述信息', desc)

my_dict = {'price': 159, 'book': '考高分网', 'desc': '这是一个精美而实用的网站'}

# 按逆向收集的方式将my_dict的多个key-value传给bar()函数

bar(**my_dict)
运行结果为:

考高分网 VIP价格是: 159
描述信息 这是一个精美而实用的网站

上面程序中,bar() 需要三个参数。接下来程序定义了一个 my_dict 字典,该字典正好包含三个 key-value 对,程序使用逆向收集即可将 my_dict 包含的三个 key-value 对以关键字参数的形式传给 bar() 函数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/805980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号