62 函数参数——传递参数时的序列解包

news2024/11/26 18:55:18

与可变长度的参数相反,这里的序列解包是指实参,同样也有 * 和 ** 两种形式。
① 调用含有多个位置参数的函数时,可以使用 Python 列表、元组、集合、字典以及其他可迭代对象作为实参,并在实参名称前加一个星号,Python 解释器将会自动进行解包,然后把序列中的值分别传递给多个单变量形参。

def func(a, b, c):  # 可以接收多个位置参数的函数
    print(a + b + c)


s = [1, 2, 3]
func(*s)  # 对列表进行解包

t = (1, 2, 3)
func(*t)  # 对元组进行解包

d = {1: 'x', 3: 'y', 5: 'z'}
func(*d)  # 对字典进行解包
func(*d.values())  # 对字典的值进行解包

s = {1, 2, 3}
func(*s)  # 对集合进行解包

在这里插入图片描述

② 如果实参是个字典,可以使用两个星号对其进行解包,会把字典转换成类似于关键参数的形式进行参数传递。对于这种形式的序列解包,要求实参字典中的所有键都必须是函数的形参名称,或者与函数中两个星号的可变长度参数相对应

def func(a, b, c=9):  # 带有位置参数和默认值参数的函数
    print(a, b, c)


d = {'a': 1, 'b': 2, 'c': 3}  # 要解包的字典
func(*d)
func(*d.values())

func(**d)

在这里插入图片描述

def func(a=3, b=4, c=5):  # 带有多个默认值参数的函数
    print(a, b, c)


d = {'a': 1, 'b': 2, 'c': 3}  # 要解包的字典
func(**d)  # 对字典元素进行解包

在这里插入图片描述

def func(**parameter):  # 接收字典形式可变长度参数的函数
    for i in parameter.items():
        print(i)
    print(parameter)


d = {'f': 10, 'm': 20, 'n': 30}
func(**d)  # 对字典元素进行解包

在这里插入图片描述

③ 如果一个函数需要以多种形式来接收参数,定义时一般把位置参数放在最前面,然后是默认值参数,接下来是一个星号的可变长度参数,最后是两个星号的可变长度参数;调用函数时,一般也按照这个顺序进行参数传递。
调用函数时如果对实参使用一个星号 * 进行序列解包,那么这些解包后的实参将会被当作普通位置参数对待,并且会在关键参数和使用两个星号 ** 进行序列解包的参数之前进行处理。

def func(a, b, c):  # 定义函数
    print(a, b, c)


func(*(1, 2, 3))  # 调用,序列解包
func(1, *(2, 3))  # 位置参数和序列解包同时使用
func(1, *(2,), 3)

# 一个星号的序列解包相当于位置参数,优先处理,引发异常
# TypeError: func() got multiple values for argument 'a'
# func(a=1, *(2, 3))

# func(b=1, *(2, 3))  # 重复给 b 赋值,引发异常

func(c=1, *(2, 3))

# 序列解包不能在关键参数解包之后
# SyntaxError: iterable argument unpacking follows keyword argument unpacking
# func(**{'a': 1, 'b': 2, 'c': 3}, *(3,))

# 一个星号的序列解包相当于位置参数,优先处理,引发异常
# TypeError: func() got multiple values for argument 'a'
# func(*(3,),**{'a':1,'b':2})

func(*(3,), **{'c': 10, 'b': 20})

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

element-ui/plus使用el-date-picker周 选择器返回时间范围处理案例

element-ui/plus使用el-date-picker周 选择器返回时间范围处理案例 如图所示 <el-date-pickerchange"changeTime":picker-options"{ firstDayOfWeek: 1 }"v-model"value1"type"week"format"YYYY年 第ww周"placeholder&…

C++初学者指南-5.标准库(第二部分)--数值运算算法

C初学者指南-5.标准库(第二部分)–数值运算算法 文章目录 C初学者指南-5.标准库(第二部分)--数值运算算法iota (注意不是itoa函数)Reductions reduce transform_reduce遗留操作&#xff08;无法并行执行&#xff09;accumulate (≈ reduce) C98inner_product (≈ transform_r…

sanger序列拼接--一次错误示范

文章目录 目的实现步骤 目的 NGS得到了很多的reads&#xff0c;其中有一些paired reads我想根据overlap 搭建起来&#xff0c;因为我对序列的ID做了删减&#xff0c;所以再pandaseq那里跑不通。 总结来说&#xff0c;目的很简单&#xff0c;就是把 有重叠区域的 reads 搭起来…

【学习笔记】A2X通信的协议(二)- A2X配置参数

目录 5. A2X配置参数 5.1 一般说明 5.2 A2X配置参数的配置和优先级 5.2.1 一般说明 5.2.2 A2X配置参数的优先级 5.2.3 通过PC5进行的A2X通信的配置参数 5.2.4 广播远程ID&#xff08;BRID&#xff09;的配置参数 5.2.5 直接检测和避免&#xff08;DDAA&#xff09;的配…

解决 Beyond Compare 30天过期问题

解决 Beyond Compare 30天过期的步骤如下&#xff1a; 1、使用快捷键WinR打开运行窗口&#xff0c;输入regedit并回车&#xff0c;打开注册表编辑器。 2、在注册表编辑器中&#xff0c;找到Beyond Compare的注册表位置&#xff0c;路径通常是HKEY_CURRENT_USER\Software\Scoot…

【redis】springboot 用redis stream实现MQ消息队列 考虑异常ack重试场景

redis stream是redis5引入的特性&#xff0c;一定程度上借鉴了kafka等MQ的设计&#xff0c;部署的redis版本必须 > 5 本文主要讲的是思路&#xff0c;结合简单的源码分析&#xff08;放心&#xff0c;无需深入大量源码&#xff09;&#xff1b;讲述在redis stream文档缺乏&a…

港科夜闻 | 香港科大,中大,港大及国大获旭日慈善基金捐款港币五千万元,支持基础数学研究及人才发展...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大、中大、港大及国大获旭日慈善基金捐款港币五千万元&#xff0c;支持基础数学研究及人才发展。香港科大校长叶玉如教授在会上代表四所大学&#xff0c;就旭日慈善基金会对推动高等教育及基础研究发展的慷慨支持&…

探索智谱AI的视频生成神器:CogVideoX完全指南

引言 在当今数字化和内容创作高度发达的时代&#xff0c;视频已经成为信息传播和营销的重要工具。然而&#xff0c;对于许多缺乏视频制作经验或资源的个人和企业而言&#xff0c;如何快速、高效地创建吸引人的视频仍然是一个挑战。智谱AI推出的CogVideoX&#xff0c;作为一款先…

PuerTS和HybridCLR哪个更适合开发微信小游戏

1&#xff09;PuerTS和HybridCLR哪个更适合开发微信小游戏 2&#xff09;使用了Play Asset Delivery提交版本被Google报错 3&#xff09;怎样设置normalize来改变摄像机位置 4&#xff09;如何禁用增强型输入法中除某些输入操作之外的输入操作 这是第397篇UWA技术知识分享的推送…

CodeWave常用功能

1、CodeWave添加H5或PC端 CodeWave在左侧侧边栏&#xff0c;可通过“”按钮&#xff0c;直接添加PC端或H5端&#xff0c;或添加页面。 2、修改主题颜色 CodeWave左侧栏对应端的更多按钮中&#xff0c;可对权限及主题色进行修改。 在主题样式修改页面&#xff0c;右侧提供了预…

视频监控汇聚平台LntonCVS视频监控管理平台解决方案和常见的接入方式

一、视频融合平台 LntonCVS是一款支持多种协议和设备接入的视频汇聚流媒体平台。它能够统一管理和整合不同品牌、不同协议的视频资源&#xff0c;构建视频数据资源池&#xff0c;并通过视频资源目录为各类业务场景提供丰富、实时、高清的视频资源。 二、接入方式 1. 前端设备…

成都跃享未来教育咨询抖音小店共绘未来发展

在数字经济的浪潮中&#xff0c;教育行业正经历着前所未有的变革与升级。成都&#xff0c;这座历史悠久而又充满活力的城市&#xff0c;正以其独特的地理位置、深厚的文化底蕴和前瞻性的发展战略&#xff0c;孕育着教育创新的新篇章。其中&#xff0c;成都跃享未来教育咨询抖音…

水域救援设备,保护水域安全_鼎跃安全

季作为一年中最炎热的季节&#xff0c;不仅带来了难耐的高温&#xff0c;也悄然间加剧了水域安全问题的严峻性。这一时期&#xff0c;正值学生群体享受悠长暑假的宝贵时光&#xff0c;他们往往倾向于寻找清凉之地以解酷暑&#xff0c;水域因此成为了不少学生的首选之地。然而&a…

Linux(CentOS)环境搭建Gitea做私有的git服务器

基本分三大步骤&#xff0c;1.安装Gitea&#xff0c;2.安装MySQL&#xff08;或者SQlite等其中一款数据库&#xff09;3.安装Git 一.Gitea Gitea文档地址&#xff1a;文档 - Docs (gitea.io) Gitea的官网&#xff1a;https://gitea.io Gitea最新版本的下载地址&#xff1a;…

【一竞技CS2】Twistzz秋季小组赛rating最高指挥

1、BLAST秋季小组赛于刚刚落下帷幕&#xff0c;数据统计显示&#xff0c;Liquid战队选手Twistzz是秋季小组赛里Rating最高指挥。 2、HLTV发布本周最新世界排名。TOP10战队方面凭借着在小组赛双杀NAVI头名晋级&#xff0c;Liquid战队新阵容一跃进入TOP10的行列&#xff0c;目前位…

湖北职称评审条件是什么?

其实湖北职称评审&#xff0c;要求很多&#xff0c;具体是根据评审专业大类来划分的&#xff0c;不同的专业要求略微有不同&#xff0c;主要是表现在相应的资料准备上&#xff0c;那么职称具体的有哪些要求&#xff1f; 别老听别人说湖北职称申报要求是什么&#xff0c;甘建二告…

基于R语言生物信息学大数据分析与绘图

随着高通量测序以及生物信息学的发展&#xff0c;R语言在生物大数据分析以及数据挖掘中发挥着越来越重要的作用。想要成为一名优秀的生物数据分析者与科研团队不可或缺的人才&#xff0c;除了掌握对生物大数据挖掘与分析技能之外&#xff0c;还要具备一定的统计分析能力与SCI论…

文本加密工具类-支持MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPMD160算法

文本加密工具类 1.算法简介1.1 MD51.2 SHA-11.3 SHA-2&#xff08;推荐使用&#xff09;1.4 SHA-3&#xff08;推荐使用&#xff09;1.5 RIPEMD-160 2.工具类案例2.1POM导入2.2代码编写2.3 输出示例 1.算法简介 1.1 MD5 MD5 (Message-Digest Algorithm 5) 描述&#xff1a;M…

一文理清生产管理的“4管”和“8理”!

一提到生产管理&#xff0c;很多人的第一反应可能是车间里忙碌的身影、流水线上飞速运转的机器&#xff0c;还有一张张密密麻麻的生产计划表。但实际上&#xff0c;生产管理远不止于此。 “科学管理之父”弗雷德里克温斯洛泰勒认为&#xff1a;管理就是确切地知道你要别人干什…

【Python】数据类型之元组

列表&#xff08;list&#xff09;是一个有序且可变的容器&#xff0c;在里面可以存放多个不同类型的元素。 元组&#xff08;tuple&#xff09;是一个有序且不可变的容器&#xff0c;在里面可以存放多个不同类型的元素。 1、定义 元组中的元素与元素之间用逗号相隔&#xf…