python的动态参数
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}
python的动态参数相关推荐
- python(3)-动态参数实现字符串格式化
s1 = "{0} ===> {1}" s = s1.format('lilei', 'boy') print(s)l = ['lilei', 'boy'] s = s1.f ...
- python动态参数_python动态参数
Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...
- python:动态参数*args
动态参数 顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个.2个到任意个,还可以是0个.在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值. Python的动态参数有两种,分别是*a ...
- python函数的动态参数之一个星号和两个星号
一.概述 1.python有位置参数.默认参数,这两种是最常用的参数. 2.动态参数即不限定参数个数,以一种动态的方式接受传参的个数. 3.python的动态参数有两种,分别是 ' *args ' ...
- Python函数的动态参数
1. 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args):print('我想吃',args)eat('大米饭','中米饭','小米饭') # 收到的结果是一个tuple元祖 ...
- python中自定义函数如何传递动态参数_python 函数的动态参数
1. 函数的动态参数 1. *args 位置参数动态传参 2. **kwargs 关键字参数动态传参 顺序:位置参数, *args, 默认值, **kwargs def func(*args, **k ...
- 如何用python制作动态二维码,提升表白成功率?
来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...
- python画动图-Python绘制动态水球图过程详解
先来看看绘制的动态水球图: 没有安装PyEcharts的,先安装PyEcharts: # 安装pyecharts模块,直接安装就是最新的版本pip install pyecharts 安装好PyEch ...
- python画动态爱心-【Python】五分钟画一条动态心形曲线~
0.最终效果 1.绘制一条心形曲线 最近看到个视频,打算绘制个心型动态的曲线. 1.1 Matlab确定图像及其函数 网上有很多关于心形曲线的资料,各种各样的形状,但是我比较倾心于桃心形.先在Matl ...
最新文章
- 合并代码还在用git merge吗?我们都用git rebase!
- 07/11/08 资料整理
- WinForm学习笔记(2)
- Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发
- sharepoint 2010项目中,ashx页面获取SPContext.Current 为null的原因和解决方法
- 随想录(学习nxp rt1052 soc)
- 《深度学习-改善深层神经网络》-第二周-优化算法-Andrew Ng
- mysql 数据恢复软件_Recovery Toolbox for MySQL(MySQL数据库修复软件)
- C++语言课程设计——超市商品管理系统
- 南大通用数据库(2):客户端的使用(GBase 企业管理器的使用)
- 橘子学ES19之词项搜索全文检索
- 设计模式学习难度系数排名
- socket阻塞和非阻塞有哪些影响
- 清华大学计算机系哪个专业就业前景最好,清华大学就业率及就业情况怎么样(含就业前景好的专业)...
- 教你快速配置wordpress由http变成https访问
- 机器学习基础——生成模型和判别模型
- win11系统影响玩游戏吗?适合玩游戏吗?
- 猫狗分类代码,小白适宜
- Android DownloadManager的用法
- SQL进阶教程—CASE表达式
热门文章
- 云原生势不可挡,华为云GaussDB加速企业数字化转型
- 技术实践丨React Native 项目 Web 端同构
- 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?
- 华为云瑶光:打通云边端界限,为企业云上业务带来最优解
- 【华为云技术分享】文字识别服务(OCR)基于对抗样本的模型可信安全威胁分析初析
- webpack4.0各个击破(10)—— Integration篇
- java ftp 断点,java实现ftp断点续传
- oracle .bdb,oracle 11g RAC crfclust.bdb过大的处理
- git 合并提交 error: cannot ‘squash‘ without a previous commit
- LeetCode-236: 二叉树的最近公共祖先