Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python中 *args 和 **kwargs 的含义?

Python中 *args 和 **kwargs 的含义?

作者头像
用户1564362
发布于 2019-11-12 08:15:20
发布于 2019-11-12 08:15:20
1.3K00
代码可运行
举报
文章被收录于专栏:飞总聊IT飞总聊IT
运行总次数:0
代码可运行

以下文章来源于程序IT圈,作者小猿同学

问:Python中 *args 和 **kwargs 的含义?

答:在python中,*args和**kwargs通常使用在函数定义里。*args 和 **kwargs 都允许你给函数传不定数量的参数,即使在定义函数的时候不知道调用者会传递几个参数。ps: *args和**kwargs只是一个大家都遵守的习惯,名字可以任意写的 。

1. *args例子

*args能够接收不定量的非关键字参数,会把位置参数转化为tuple(非键值对的参数组),例子如下面代码所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def func(*args):
    for i in args:
        print(i)
func(1,2,3,4)

运行结果:
1
2
3
4

2.**kwargs 例子

**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了,它会把关键字参数转化为dict(键值对参数组),例子如下面代码所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
func(a=1,b=2,c=3,d=4)

运行结果:
a 1
b 2
c 3
d 4

下面演示个错误的案例,看到有个错误:"func() takes 0 positional arguments but 4 were given" ,“未定义位置型参数,却收到了4个参数。” 也就是说,kwargs需要的是带名称的参数,而args代表位置型参数(无名称参数)。从英语上来说,kwargs多出来的kw其实就是keyword的意思,表示这是“键值对”参数,就像字典那样 。这样解释,*args 和 **kwargs 两者的区别,大家掌握了吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def func(**kwargs):
    for i in kwargs:
        print(i,kwargs[i])
func(1,2,3,4)

运行结果:
Traceback (most recent call last):
  File "F:/pyworkspace/hello.py", line 4, in <module>
    func(1,2,3,4)
TypeError: func() takes 0 positional arguments but 4 were given

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
理解 Python 编程中 *args 与 **kwargs 的妙用
在 Python 编程中,*args 和 **kwargs 是两种用于函数定义时处理可变数量的参数的机制。它们分别用于处理位置参数(*args)和关键字参数(**kwargs)。这两个机制提高了函数的灵活性和可重用性,允许开发者编写更加通用和灵活的代码。
叶庭云
2024/05/25
3.5K0
[949]python不定长参数*args和**kwargs
在python语言写成的模块中的函数里,常常可以看到函数的参数表列里面有这两个参数,形如:
周小董
2021/03/08
3.7K1
*args 和 **kwargs的用法
一 简介 *args 和 **kwargs 主要用于函数定义。 当我们需要定义的函数的传入参数个数不确定时,可以使用*args 和 **kwargs 代替不确定的参数个数。其实并不是必须写成*args 和**kwargs。 只有变量前面的 *(星号)才是必须的. 我们可以写成*var和**vars. 而写成*args 和**kwargs只是一个通俗的命名约定。 二 使用 2.1 *args 当函数的参数个数不确定且不需要指定参数名称时,*args的格式是常规的参数 val1[,val2,val3....]
用户1278550
2018/08/09
5200
Python小技巧:​args 和 kwargs 的乐趣
这篇文章是伟兄给我的稿子,总结实用、到位。另外,欢迎访问并关注他的博客: https://jl-zhenlaixiaowei.blog.csdn.net/ 我曾经和一个聪明的 Pythonista 结对编程,每次他输入带有可选或关键字参数的函数定义时,他都会惊呼“argh!”和“kwargh!”。 要不然我们相处的很好,我猜想这就是学术界编程最终对人所带来的影响吧。 现在args和 kwargs参数仍然是 Python 中非常有用的特性,而且理解它们的威力将使您成为更有效的开发人员。 那么“args”和“
double
2022/05/20
6260
python之魔法变量*args 和 **kwargs
*args 和**kwargs只是一个通俗的命名约定,只有变量前面的 *(星号)才是必须的,也可写成*var 和**vars。
菲宇
2019/09/06
9150
谈一谈python中的魔法变量*args和**kwargs
,没有注释,没有封装,没有可读性。哎,幸亏发现及时,现在正在写一个新的任务,刚好可以好好弄弄架构和代码了!
zenRRan
2018/10/24
5040
叮咚,UI自动化测试面试题分享!
不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
可可的测试小栈
2021/08/06
1.1K0
叮咚,UI自动化测试面试题分享!
python学习笔记:*args和**kwargs使用原理?
一.*args和**kwargs原理  先看个例子: def test(*args,**kwargs): print("args =",args) print("kwargs =",kwargs) print("----------------------------------") if __name__ == '__main__': test(1,5,94,564) test(a=1,b=2,c=3) test(1,2,3,4,a=1,b=2,c=3)
用户1679793
2018/04/28
1.2K0
python中的*args与**kwargs的含义与作用
一、*args与**kwargs介绍 *args是非关键字参数,用于元组,**kwargs是关键字参数 (字典) 也就是说args表示任何多个无名参数,然而kwags表示一个一个有着对应关系的关键字参数, 在使用的时候需要注意,*args要在**kwags之前,不然会发生语法错误 二、args使用案例和kwargs使用案例 # coding=utf-8 """ @project: panglu_test_59 @Author:gaojs @file: test017.py
懿曲折扇情
2022/08/24
5010
教你一招 | Python: 函数参数魔法
函数参数 在 Python 中,定义函数和调用函数都很简单,但如何定义函数参数和传递函数参数,则涉及到一些套路了。总的来说,Python 的函数参数主要分为以下几种: 必选参数 默认参数 可变参数 关键字参数 必选参数 必选参数可以说是最常见的了,顾名思义,必选参数就是在调用函数的时候要传入数量一致的参数,比如: >>> def add(x, y): # x, y 是必选参数 ... print x + y ... >>> add() # 啥都没传,不行
CDA数据分析师
2018/02/05
7970
Python中*args和**kwargs
在python开发的过程中,经常会遇到了*args和**kwargs这两个魔法变量,那么它们是什么呢?
SEian.G
2021/07/07
1.1K0
python--一文搞懂参数args,kwargs
函数传参是最常用的方法,但是你真的掌握python里参数的传递和使用了吗?之前文章我们介绍了传参的拷贝情况,会不会引起传入参数的变化。本文详细介绍python的函数中*args, **kwargs的使用。
languageX
2023/04/03
7.8K2
如何运用Python中函数的魔法参数,*args 和 **kwargs 真的很重要!!!
在Python中,*args 和 **kwargs 是用于函数定义中的特殊语法,它们允许函数接收可变数量的参数。*args 用于接收任意数量的位置参数(非关键字参数),而 **kwargs 用于接收任意数量的关键字参数。
小白的大数据之旅
2024/11/25
5150
如何运用Python中函数的魔法参数,*args 和 **kwargs 真的很重要!!!
Python中函数参数传递方法*args, **kwargs,还有其他
来源:DeepHub IMBA本文约3000字,建议阅读9分钟本文将讨论Python的函数参数。 我们将了解*args和**kwargs,/和*的都是什么,虽然这个问题是一个基本的python问题,但是在我们写代码时会经常遇到,比如timm中就大量使用了这样的参数传递方式。 定义和传递参数 parameters 和arguments 之间的区别是什么?许多人交替使用这些术语,但它们是有区别的: Parameters 是函数定义中定义的名称; Arguments是传递给函数的值。 红色的是param
数据派THU
2023/04/18
1.2K0
Python中函数参数传递方法*args, **kwargs,还有其他
Python魔法变量*args 和 **kwargs
多个实参,放到一个元组里面,以*开头,可以传多个参数;**是形参中按照关键字传值把多余的传值以字典的方式呈现 *args 和**kwargs只是一个通俗的命名约定,只有变量前面的 *(星号)才是必须的,也可写成*var 和**vars。 *args 和 **kwargs 主要用于函数定义。 可以将不定数量的参数传递给一个函数。主:不定的意思是预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。 *args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现)
菲宇
2022/05/06
9310
python中*args和**kwargs的区别
*args是函数使用者可以发送任意数量非键值对的参数传给这个函数,*args在接收参数后,将返回值以元组tuple的形式返回。
用户7886150
2020/12/19
5190
Python `*args` 和 `**kwargs`:优雅处理可变参数的终极指南 & 配合 frozenset 实现通用缓存装饰器
在Python开发中,我们经常会遇到需要处理不定数量参数的场景。今天就来聊聊Python中的*args和**kwargs,看看它们如何帮我们优雅地解决这类问题。
Piper破壳
2024/12/18
1340
Python函数进阶
在Python中,函数是组织代码、提高重用性与可读性的基本构建块。随着程序逻辑的复杂性增加,函数的使用也逐渐演变出更多的形式和技巧。本章详细讲解了Python函数的进阶使用,包括函数的多返回值、函数的多种传参方式以及匿名函数。
Heaven645
2024/07/24
1491
Python函数进阶
Python教程(25)——Python中参数类型详解
当我们在编写函数时,会定义一些占位符,这些占位符就是参数,参数是函数定义中用于接收外部传递值的占位符,这个会帮助我们在函数被调用时接收外部传递的值。在Python当中,有各种各样类型的参数,主要有位置参数、默认参数、关键字参数、可变位置参数、可变关键字参数以及强制关键字参数。
一点sir
2024/01/19
2180
Python教程(25)——Python中参数类型详解
python中*args和**kwargs用法解读
很多时候,会有人问到*args和**kwargs,那么如何理解呢?
雷子
2023/12/04
5000
python中*args和**kwargs用法解读
相关推荐
理解 Python 编程中 *args 与 **kwargs 的妙用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验