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的动态参数相关推荐

  1. python(3)-动态参数实现字符串格式化

    s1 = "{0} ===> {1}" s = s1.format('lilei', 'boy') print(s)l = ['lilei', 'boy'] s = s1.f ...

  2. python动态参数_python动态参数

    Python的动态参数有两种,分别是*args和**kwargs,这里面的关键是一个和两个星号的区别,而不是args和kwargs在名字上的区别,实际上你可以使用*any或**whatever的方式. ...

  3. python:动态参数*args

    动态参数 顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个.2个到任意个,还可以是0个.在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值. Python的动态参数有两种,分别是*a ...

  4. python函数的动态参数之一个星号和两个星号

    一.概述 1.python有位置参数.默认参数,这两种是最常用的参数. 2.动态参数即不限定参数个数,以一种动态的方式接受传参的个数. 3.python的动态参数有两种,分别是 ' *args '  ...

  5. Python函数的动态参数

    1. 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args):print('我想吃',args)eat('大米饭','中米饭','小米饭') # 收到的结果是一个tuple元祖 ...

  6. python中自定义函数如何传递动态参数_python 函数的动态参数

    1. 函数的动态参数 1. *args 位置参数动态传参 2. **kwargs 关键字参数动态传参 顺序:位置参数, *args, 默认值, **kwargs def func(*args, **k ...

  7. 如何用python制作动态二维码,提升表白成功率?

    来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...

  8. python画动图-Python绘制动态水球图过程详解

    先来看看绘制的动态水球图: 没有安装PyEcharts的,先安装PyEcharts: # 安装pyecharts模块,直接安装就是最新的版本pip install pyecharts 安装好PyEch ...

  9. python画动态爱心-【Python】五分钟画一条动态心形曲线~

    0.最终效果 1.绘制一条心形曲线 最近看到个视频,打算绘制个心型动态的曲线. 1.1 Matlab确定图像及其函数 网上有很多关于心形曲线的资料,各种各样的形状,但是我比较倾心于桃心形.先在Matl ...

最新文章

  1. 合并代码还在用git merge吗?我们都用git rebase!
  2. 07/11/08 资料整理
  3. WinForm学习笔记(2)
  4. Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发
  5. sharepoint 2010项目中,ashx页面获取SPContext.Current 为null的原因和解决方法
  6. 随想录(学习nxp rt1052 soc)
  7. 《深度学习-改善深层神经网络》-第二周-优化算法-Andrew Ng
  8. mysql 数据恢复软件_Recovery Toolbox for MySQL(MySQL数据库修复软件)
  9. C++语言课程设计——超市商品管理系统
  10. 南大通用数据库(2):客户端的使用(GBase 企业管理器的使用)
  11. 橘子学ES19之词项搜索全文检索
  12. 设计模式学习难度系数排名
  13. socket阻塞和非阻塞有哪些影响
  14. 清华大学计算机系哪个专业就业前景最好,清华大学就业率及就业情况怎么样(含就业前景好的专业)...
  15. 教你快速配置wordpress由http变成https访问
  16. 机器学习基础——生成模型和判别模型
  17. win11系统影响玩游戏吗?适合玩游戏吗?
  18. 猫狗分类代码,小白适宜
  19. Android DownloadManager的用法
  20. SQL进阶教程—CASE表达式

热门文章

  1. 云原生势不可挡,华为云GaussDB加速企业数字化转型
  2. 技术实践丨React Native 项目 Web 端同构
  3. 一文带你读懂!华为云在ACMUG技术沙龙上都透露了些啥?
  4. 华为云瑶光:打通云边端界限,为企业云上业务带来最优解
  5. 【华为云技术分享】文字识别服务(OCR)基于对抗样本的模型可信安全威胁分析初析
  6. webpack4.0各个击破(10)—— Integration篇
  7. java ftp 断点,java实现ftp断点续传
  8. oracle .bdb,oracle 11g RAC crfclust.bdb过大的处理
  9. git 合并提交 error: cannot ‘squash‘ without a previous commit
  10. LeetCode-236: 二叉树的最近公共祖先