Python中关于 *args与**args的用法及说明

 更新时间:2023年02月06日 14:41:25   作者:杨哥学编程  
这篇文章主要介绍了Python中关于 *args与**args的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

关于 *args与**args的用法

*args 和 **kwargs主要用于函数定义,你可以将不定数量的参数传递给某个函数。

*args

*args 不定参数(不定的意思是指,预先并不知道,函数使用者会传递多少个参数给你)

*args是用来发送一个非键值对的可变数量的参数列表给一个函数。

*args的用法:当传入的参数个数未知,且不需要知道参数名称时。

代码如下:

def func_arg(farg, *args):
    print("formal arg:", farg)
    for arg in args:
        print("another arg:", arg)
func_arg(1,"youzan",'dba','hello')


# 输出结果如下:
# formal arg: 1
# another arg: youzan
# another arg: dba
# another arg: hello

**kwargs

**kwargs 传入键值对(例如:num1=11,num2=22)

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

代码如下:

#利用它转换参数为字典
def kw_dict(**kwargs):
    return kwargs
print(kw_dict(a=1,b=2,c=3))

# 输出结果如下:
# {'a': 1, 'b': 2, 'c': 3}

*args和**kwargs是什么意思

去面试的时候,做了一道笔试题——什么是*args和**kwargs,区别在哪里?

有点蒙,好像见过,但是不知道具体的意思。所以回来查了一下资料,做一下笔记。

总的来说,*args代表任何多个无名参数,返回的是元组;**kwargs表示关键字参数,所有传入的key=value,返回字典;

*args和**kwargs的用途

*args 和 **kwargs 主要用于函数定义, 可以将不定数量的参数传递给一个函数。

*args 是用来发一个非键值对的可变数量的参数列表给一个函数; kwargs允许将一个不定长度的键值对,作为参数传递给一个函数。如果需要在一个函数中处理带名字的参数时,此时就应该使用kwargs了。

def test(a,*args,**kwargs):
    print(a)
    print(args)
    print(kwargs)
test(1,3,5,7,c='2',d=4)

1
(3, 5, 7)
{‘c’: ‘2’, ‘d’: 4}

在test(1,3,5,7,c=‘2’,d=4)中,函数里参数对应的数值为:a=1,*args表示剩下的没有名称的参数,**kwargs表示剩余的键值对。

def ak(*args,**kwargs):
    print('args=',args)
    print('kwargs=',kwargs)
    print('***************************************')
if __name__=='__main__':
    ak(2,4,6,8)
    ak(a=2,b=4,c=6,d=8)
    ak(2,4,6,8,a=1,b=3,c=5)
    ak('x', 2, None, a=4, b='6', c=8)
    #ak('a', a=1, 1, None, b='2', c=3)

在这里插入图片描述

同时使用*args和kwargs时,*args参数必须要列在kwargs前,否则会报错。

ak('a', a=1, 1, None, b='2', c=3)

File “”, line 1
ak(‘a’, a=1, 1, None, b=‘2’, c=3)
^
SyntaxError: positional argument follows keyword argument

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python技巧之四种多线程应用分享

    Python技巧之四种多线程应用分享

    这篇文章主要介绍了Python中多线程的所有方式,包括使用threading模块、使用concurrent.futures模块、使用multiprocessing模块以及使用asyncio模块,希望对大家有所帮助
    2023-05-05
  • Win10下python3.5和python2.7环境变量配置教程

    Win10下python3.5和python2.7环境变量配置教程

    这篇文章主要为大家详细介绍了Win10下python3.5和python2.7环境变量配置教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • selenium切换标签页解决get超时问题的完整代码

    selenium切换标签页解决get超时问题的完整代码

    这篇文章主要给大家介绍了关于selenium切换标签页解决get超时问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • python中赋值语句的特点和形式

    python中赋值语句的特点和形式

    这篇文章主要介绍了python中赋值语句的特点和形式,文中介绍了多目标赋值的共享引用问题,多目标赋值其实是多个目标对同一个内存空间的引用,这里要分两种情况,当被引用对象是不可变对象时则不存在问题,感兴趣的朋友跟随小编一起看看吧
    2023-12-12
  • Python中itertools库的四个函数介绍

    Python中itertools库的四个函数介绍

    这篇文章主要介绍了Python中itertools库的四个函数,主要讨论itertools库中的十分使用的几个函数,并重点介绍什么时候我们应该考虑使用它们,需要的朋友可以参考一下
    2022-04-04
  • python实现的登陆Discuz!论坛通用代码分享

    python实现的登陆Discuz!论坛通用代码分享

    这篇文章主要介绍了python实现的登陆Discuz!论坛通用代码分享,需要的朋友可以参考下
    2014-07-07
  • Python实现处理apiDoc转swagger的方法详解

    Python实现处理apiDoc转swagger的方法详解

    这篇文章主要为大家详细介绍了Python实现处理apiDoc转swagger的方法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-02-02
  • python3实现飞机大战

    python3实现飞机大战

    这篇文章主要为大家详细介绍了python3实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • python list转dict示例分享

    python list转dict示例分享

    这篇文章主要介绍了python list转dict的使用方法,大家参考使用吧
    2014-01-01
  • Python微服务开发之使用FastAPI构建高效API

    Python微服务开发之使用FastAPI构建高效API

    微服务架构在现代软件开发中日益普及,它将复杂的应用程序拆分成多个可独立部署的小型服务。本文将介绍如何使用 Python 的 FastAPI 库快速构建和部署微服务,感兴趣的可以了解一下
    2023-05-05

最新评论