对于大部分Python新手来说,*args和**kwargs这两个魔法变量需要花大量的时间来解释。那么它们到底是什么呢?在什么时候使用它们呢?要搞清楚这些问题,首先你要明白,其实并不是必须写成*args和**kwargs。只有变量前面的*(星号)才是必须的。那下面就让我们先看看在Python中*args 和 **kwargs的用法总结吧。

1、*args的用法

*args和**kwargs主要用于函数定义。你可以将不定数量的参数传递给一个函数。这里的不定指的是预先并不知道函数使用者会传递多少个参数给你,所以在这个场景下使用这两个关键字。*args是用来发送一个非键值对的可变数量的参数列表给一个函数.下面举个例子帮你理解这个概念:

def test_ var_ args(f_ _arg, *argv) :

print ("first normal arg:", f_ arg)

for arg in argv :

print ( " another arg through *argv:", arg)

test_ var_ args(' yasoob',' python',' eggs' ,' test' )

这会产生如下输出:

first normal arg: yasoob

another arg through *argv: python

another arg through *argv: eggs

another arg through *argv : test

2、**kwargs的用法

**kwargs允许你将不定长度的键值对,作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数,你应该使用**kwargs。这里有个让你上手的例子:

def greet_ me (**kwargs) :

for key, value in kwargs. items () :

print("{0} == {1}". format (key, value) )

>>> greet me (name="yasoob")

name == yasoob

现在你可以看出我们怎样在一个函数里,处理了一个键值对参数了。这就是**kwargs的基础,而且你可以看出它有多么管用。

3、使用*args和**kwargs来调用函数

假设你有这样一个小函数:

def test_ _args_ kwargs (arg1, arg2, arg3) :

print ("arg1:",arg1)

print("arg2:", arg2) .

print ("arg3:",arg3)

你可以使用*args或** kwargs来给这个小函数传递参数。下面是怎样做:

#口先使口 *args .

>>> args = ("two", 3, 5)

>>> test_ args_ kwargs (*args)

arg1: twO

arg2: 3

arg3: 5

# 现在使口 **kwargs:

>>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}

>>> test_ args_ kwargs (** kwargs)

arg1: 5

arg2: two

arg3: 3

4、标准参数与*args、**kwargs在使用时的顺序

那么如果你想在函数里同时使用所有这三种参数,顺序是这样的:

some_ func(fargs, *args, **kwargs)

5、什么时候使用Python中*args 和 **kwargs?

这还真的要看你的需求而定。最常见的用例是在写函数装饰器的时候。此外它也可以用来做猴子补丁。猴子补丁的意思是在程序运行时,(runtime)修改某些代码。打个比方,你有一个类,里面有个叫get_ info的函数会调用一个API并返回相应的数据。如果我们想测试它,可以把API调用替换成一些测试数据。例如:

import someclass

def get_ info(self, *args) :

return "Test data"

someclass.get_ info = get_ info

以上就是Python中*args 和 **kwargs的用法总结,大家的疑惑都解决了吗?新乡治疗不孕不育多少钱:https://news.fh21.com.cn/yldt/zztlyy/郑州同济医院好不好:https://yyk.fh21.com.cn/hospital_6369/pj.html郑州同济不孕不育研究院:https://yyk.fh21.com.cn/hospital_6369/zn.html

python中args和kwargs的用法_Python中*args 和 **kwargs的用法总结相关推荐

  1. python中args和kwargs的用法_Python中*args 和**kwargs的用法

    当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是直接来代码吧,废话少说 [python] view plaincopyprin ...

  2. [转载] python中string函数的用法_python中string模块各属性以及函数的用法

    参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...

  3. python中result函数用法_python中函数的参数和返回值

    函数 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式 ...

  4. python中case的用法_python中Switch/Case实现的示例代码

    python 的 python中Switch/Case实现的示例代码 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现 ...

  5. python中print的用法_Python中print函数简单使用总结

    Python中print函数简单使用总结 print函数是Python的入门,每一个学习python的人都绕不开这个函数,下面介绍一下这个函数的用法. 打开电脑,选择python软件,下面选择pyth ...

  6. python的继承用法_python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  7. python中符号的用法_python中的@符号的作用

    '@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行.也就是说@A def f(): 是非法的.只可以在模块或类定义层内对函数进行修饰,不 ...

  8. python中return true的用法_python中 return 的用法

    return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回 程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return. 要返回两个数值,写成一行即可: de ...

  9. python中sys用法_python中os和sys模块的区别与常用方法总结

    python 的 python中os和sys模块的区别与常用方法总结 前言 本文主要介绍了关于python中os和sys模块区别与常用方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看 ...

  10. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

最新文章

  1. wikioi 3027 线段覆盖 2
  2. python之命令行解析工具argparse
  3. 如何删除一个员工编号及其全部主数据和事务数据?
  4. 使用Memory Analyzer tool(MAT)分析内存泄漏
  5. 【线上分享】基于人眼主观视觉的画质评价与提升
  6. leetcode 643. Maximum Average Subarray I | 643. 子数组最大平均数 I(Java)
  7. 获取所有某格式文件到文件
  8. 如何设置mysql表中文乱码_php mysql表中文乱码问题如何解决
  9. libevent c++高并发网络编程_【多线程高并发编程】Callable源码分析
  10. deepin安装bochs2.6.2_2.kafka安装与使用
  11. OpenResty HelloWorld
  12. 银河麒麟操作系统下载地址收集
  13. 使用ExtendSim进行可靠性分析仿真
  14. 微信小程序开发上线注意事项
  15. MS-TS:免费微软TTS语音合成工具(一键合成导出MP3音频)
  16. 数字孪生技术下的智慧医院再添新功能,室内地图导航让你“医”路畅通
  17. 什么是根目录,网站根目录是哪个?
  18. 解决原先mysql与wampserver中mysql冲突问题
  19. 《卸甲笔记》-多表查询之二
  20. 信息安全管理(CISP)—— 信息安全管理

热门文章

  1. 小米机械键盘 TKL 开启预售:紧凑 87 键布局,到手 229 元
  2. 一套商业级手麻系统源码,C# 手术麻醉系统源码
  3. 穿越无声世界:华为云和千博信息如何打破聋人与健听人沟通壁垒?
  4. 无刺激性化妆品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. FOXBORO P0926PA 控制脉冲模块
  6. FOXBORO P0916AA 控制模块
  7. shell编程——Shell批量管理服务器
  8. 人类对珠峰破坏超乎想象
  9. stm32学习日记--USART
  10. SpringBoot整合Quartz框架的XML方式的开发实战