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

作者:杨哥学编程 时间:2022-04-01 08:24:38 

关于 *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)

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

同时使用*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

来源:https://blog.csdn.net/qq_47183158/article/details/116598952

标签:Python,args,args
0
投稿

猜你喜欢

  • 30步检查SQL Server安全列表

    2008-12-18 14:28:00
  • 通过 Django Pagination 实现简单分页功能

    2021-03-15 15:53:03
  • Python脚本实现一键自动整理办公文件

    2022-01-02 16:36:03
  • 浅析Python字符串索引、切片、格式化

    2023-09-26 07:57:20
  • 解析scratch3.0二次开发之scratch-blocks免编译修改问题

    2022-10-18 22:36:57
  • Python安装Graphviz 超详细图文教程

    2023-02-27 16:11:18
  • python实现学生信息管理系统

    2021-11-27 11:46:42
  • 详解Python判定IP地址合法性的三种方法

    2021-12-02 14:35:10
  • MySQL select count(*)计数很慢优化方案

    2024-01-23 21:31:24
  • MySQL Union合并查询数据及表别名、字段别名用法分析

    2024-01-16 04:44:27
  • 对python产生随机的二维数组实例详解

    2022-10-29 14:13:28
  • 在Django的视图(View)外使用Session的方法

    2023-06-24 02:28:32
  • python爬取王者荣耀全皮肤的简单实现代码

    2021-03-14 16:36:43
  • ubuntu16.04在python3 下创建Django项目并运行的操作方法

    2021-02-01 11:03:50
  • Flask和pyecharts实现动态数据可视化

    2022-06-15 04:21:20
  • pandas数据清洗(缺失值和重复值的处理)

    2021-10-05 10:36:43
  • js Canvas实现的日历时钟案例分享

    2024-04-22 13:08:26
  • 简化的CSS Reset — 常用CSS重设实例

    2009-03-11 16:46:00
  • 基于python实现模拟数据结构模型

    2022-11-12 23:44:01
  • javascript实现playfair和hill密码算法

    2024-04-18 10:46:28
  • asp之家 网络编程 m.aspxhome.com