原标题:Python之 可变参数和关键字参数

刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 《Explore Python》一书,里面对这一部分的描述相对浅显易懂, 这里依据个人理解进行相关总结。

可变参数(*args)

对于可变参数可以联想到 C# 中的可变参数。可变参数是一个数量不确定的列表集合,可以是 list 类型,也可以是 tuple 类型

我们定义如下代码段:

通过运行上述代码,我们可以看出,无论我们是需要传递一个 list 集合还是 tuple 集合,在可变参数对应的函数内部都会作为 tuple 类型来处理。此外,我们还需要注意的是,我们需要传递的是集合的指针,而不是该集合对象,这是因为在 python 中,默认通过引用(也就是指针)进行函数的参数传递,这样做避免创建多个拷贝,并且能够按照方便地更新这些对象。

由于在含可变参数的函数内部,可变参数是作为 tuple 类型来处理的, 因此我们无法对其进行修改。我们可以通过创建一个 list 类型的集合临时变量,然后通过这个临时变量实现对传入的可变参数进行修改。

关键字参数(**kwargs)

关键字参数是一个由键值对组成的集合,允许通过变量名进行匹配,而不是位置。

我们定义如下代码段:

运行上述代码,我们可以看出,kwargs 的类型为 dict ,因此我们需要用过 key-value 的方式来进行访问。当我们访问的 key 不在该参数列表中程序会发生响应。

综合运用

总结

*args 和 **kwargs 并不是 python 中的参数关键字,而是一种惯用写法。

在 python 中,函数参数主要分为:必选参数,默认参数,可变参数,关键字参数。必选参数必须赋值;默认参数可赋可不赋,如不赋值则传递默认的数值;可变参数传递的是一个参数列表,列表中的元素数量不确定;关键字参数是一个键值对集合,通过键值对的方式来进行数值传递。它们之间的排列顺序为:必选参数 -> 默认参数 -> 可变参数 -> 关键字参数。返回搜狐,查看更多

责任编辑:

python 可变参数 关键字参数_Python之 可变参数和关键字参数相关推荐

  1. python可变参数的定义_Python函数可变参数

    Python函数可变参数教程 在 Python 中函数的可变参数又被称为不定长参数,Python 中的可变参数不是必须是函数的最后一个参数,但如果不是函数的最后一个参数,那么普通参数必须使用 Pyth ...

  2. python函数关键字参数传递_Python给函数传递不定关键字的参数

    转载请注明来自公众号『数据挖掘机养成记』 前言 在上一篇文章『[Python]给函数传递不定个数的参数』中,我们主要讲解了*在函数定义和函数调用阶段的不同作用,并留了一个小问题: 我们用*定义了add ...

  3. python编写请求参数带文件_python requests 库请求带有文件参数的接口实例

    有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接口有明显区别,显示的不是简单的键值对,所以我们也不能只通过 d ...

  4. python中数据类型转换原理_python的可变与不可变数据类型的原理是什么呢?

    Python中变量的进阶知识: 涉及到Python的对象知识. 即:可变对象和不可变对象.题目中的可变和不可变数据类型,表述不准确. Python中,一切皆对象. 对象是一种抽象.抽象是什么?抽象就是 ...

  5. python接口自动化pdf悠悠_python接口自动化13-data和json参数傻傻分不清【悠悠】

    https://www.cnblogs.com/yoyoketang/p/7231384.html 前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参 ...

  6. python可变参数报错_Python之可变参数,*参数,**参数,以及传入*参数,进行解包...

    1.定义了一个需要两个参数的函数 def print_str(first, second): print first print second if __name__ == "__main_ ...

  7. python求所有参数的乘积_python 通过可变参数计算n个数的乘积方法

    Python编写一个函数,分享1*2*3*4...*n的乘积,编写主这是一种代码: def jc(n): i=1 s=1 for i in range(1,n+1): s=s*i i+=1 retur ...

  8. python怎么来算面积_Python实现计算长方形面积(带参数函数demo)

    Python实现计算长方形面积(带参数函数demo) 如下所示: # 计算面积函数 def area(width, height): return width * height def print_w ...

  9. python语言输入两个数_python的函数输入两个参数吗

    本我我们要讨论的是关于函数的传参问题 对于函数:def fun(arg): print(arg) def main(): fun('hello,Hongten') if __name__== '__m ...

  10. python传入参数加星号_Python 带星号(* 或 **)的函数参数详解

    1. 带默认值的参数 在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下: >> def defaultValueArgs(common, defaultStr = &qu ...

最新文章

  1. 15天Python入门-3-流程控制-选择结构
  2. python装饰器-python中的装饰器常用于哪些应用场景
  3. NHibernate教程2(转载)
  4. 【.Net Micro Framework PortingKit(补) – 1】USB驱动开发 1
  5. 泰森怎么会输给道格拉斯_泰森24岁就被击败,如果能像他学习巅峰时期至少能延长三年...
  6. 解决Error: That port is already in use.
  7. 小学三年级计算机导学案,小学三年级学科导学案.doc
  8. springboot2 oauth2 jwt认证服务器和资源服务器
  9. 线粒体基因组常见缩写与术语
  10. 程序员为什么一定要学好数学?驻足听一下“老人言”
  11. Excel 如何引用某表格中的某一列作为数据有效性验证
  12. 通过耳机口左右声道输出得到4路控制信号
  13. Redis教程(一) Redis入门教程
  14. Vue extends拓展任意组件功能(el-select实例)-两种写法
  15. 易之 - 我是个大师(2014年3月6日)
  16. 从新建文件夹开始构建ShadowPlay Engine游戏引擎(3)
  17. 大好河山集团董事长黄国林受邀出席2023中国好公司高峰论坛暨产学研合作峰会
  18. DGCNN理解理论篇
  19. java企业网站源码 后台springmvc SSM 前台静态引擎 代码生成器
  20. python round(1234.5678、-2)_Python中你不知道的特性

热门文章

  1. 20211020 段院士全驱系统
  2. Git复习(十三)之git revert用法及与git reset区别
  3. helm istio k8s docker
  4. POJ 1741 Tree(点分治)
  5. IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)...
  6. MAC设置——企业邮箱标准版
  7. 深入探讨this指针
  8. canvas入门-1三种填充方式、渐变、模式
  9. quartz数据库方式与web工程整合
  10. CodeForces-589B(思维/排序)