热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python的动态参数

1.*的作用用在动态参数前,打包多个参数并将其转化为元组deffunc(*args):print(args)func(1,2,3)#(1,2,3)输入参数为1,

1. ' * ' 的作用


  • 用在动态参数前,打包多个参数并将其转化为元组

def func(*args):print(args)func(1, 2, 3) # (1, 2, 3)

输入参数为1, 2, 3,最后返回的结果是一个元组 (1, 2, 3)


  • 用在可迭代对象前,进行自动解包转化为多个单变量参数

def func(a, b, c):print(a, b, c)args = [1, 2, 3]
func(*args) # 1 2 3

输入参数为一个列表[1, 2, 3],解释器自动进行解包然后分别传递给3个变量。


2. ' ** ' 的作用


  • 用在动态参数前,打包多个赋值形式的参数并将其转化为字典

def func(**kwargs):print(kwargs)func(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}

3. 参数类型


  • 位置参数

所有参数的顺序必须一一对应,且数量一致。

def func(a, b, c):print(a, b, c)func(1, 2, 3) # 1 2 3

  • 关键字参数

函数调用通过键值对形式加以指定。关键字参数之间不存在先后顺序;有位置参数时,位置参数必须在关键字参数的前面。

def func(a, b, c):print(a, b, c)func(a=1, b=2, c=3) # 1 2 3
func(b=2, c=3, a=1) # 1 2 3
func(4, b=5, c=6) # 4 5 6
# 错误的调用方式
func(a=4, b=5, 6) # SyntaxError: positional argument follows keyword argument

  • 默认参数

为参数提供默认值,调用函数时可传可不传。所有位置参数必须放在默认参数前面。

# 正确的定义方式
def func(a, b=2):print(a, b)func(1) # 1 2
func(1, 3) # 1 3# 错误的定义方式
def func(a=1, b):print(a, b) # SyntaxError: non-default argument follows default argument

4. ' *args ' 与 ' **kwargs '

定义函数时,如果不确定调用的时候会传递多少个参数,可以打包位置参数或者关键字参数来进行参数传递。


  • 位置传递

def func(*args):print(args)func(1) # (1,)
func(1, 2) # (1, 2)
func(1, 2, 3) # (1, 2, 3)

  • 关键字传递

def func(**kwargs):print(kwargs)func(a=1) # {'a': 1}
func(a=1, b=2) # {'a': 1, 'b': 2}
func(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}

注意:***只有在传参时才有用。

# 错误的使用方法
args = (1,2,3)
a, b, c = *args # SyntaxError: can't use starred expression here

5. 参数混合使用

函数定义和调用时的参数类型必须一致;位置参数放在*args参数前,*args参数放在**kwargs参数前,**kwargs参数放在最后。

# 位置参数 默认参数 *args **kwargs
def func(a, b, c=0, *args, **kwargs):print(a, b, c, args, kwargs)func(1, 2, m=7, n=8) # 1 2 0 () {'n': 8, 'm': 7}
func(1, 2, 3, 4, 5, 6, m=7, n=8) # 1 2 3 (4, 5, 6) {'m': 7, 'n': 8}# 位置参数 *args 默认参数 **kwargs
def func(a, b, *args, c=0, **kwargs):print(a, b, c, args, kwargs)func(1, 2, 3, 4, 5, 6, m=7, n=8) # 1 2 0 (3, 4, 5, 6) {'m': 7, 'n': 8}
func(1, 2, 3, 4, 5, 6, c=9, m=7, n=8) # 1 2 9 (3, 4, 5, 6) {'m': 7, 'n': 8}

 

 

 


推荐阅读
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
author-avatar
子华2502924833
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有