首页 > 编程语言 >【Python】函数的可变参数 *args 和 **kwargs的使用

【Python】函数的可变参数 *args 和 **kwargs的使用

时间:2023-03-30 15:15:21浏览次数:40  
标签:__ Python kwargs args 键值 可变 参数

可变参数*args 和 **kwargs

*args和**kwargs主要用于定义函数的可变参数,*args和**kwargs组合起来可以传入任意的参数。(注意:参数*args 必须在 **kwargs 之前定义)

  *args : *收集函数所有未匹配位置的参数 打包成 元组,即可变参数*args 类型为 tuple

  **kwargs : **收集函数所有未匹配关键字参数 组成 字典,及可变参数**kwargs 类型为 dict

 

Tips:定义可变参数名称时,args和kwargs不是固定的,以前缀*和**为固定定义方式,即 * 定义的可变参数类型为tuple,** 定义的可变参数类型为dict

def func(*args, **kwargs):
    """
    可变参数

    :param args: 非键值对的可变数量的参数列表
    :param kwargs: 键值对的可变数量的参数列表
    :return:
    """
    logs.info("非键值对的可变参数列表:{}".format(args))
    logs.info("键值对的可变数量的参数列表:{}".format(kwargs))
    name = kwargs.get("name") if "name" in kwargs.keys() else ""
    addr = kwargs.get("address") if "address" in kwargs.keys() else ""
    ip = [i for i in args]
    logs.info("{} 客户名称:{} 的居住地址:{}".format(ip, name, addr))


if __name__ == "__main__":
    """run"""
    func(1, 8, name="lisi", address="beijing")

 

 

 

 

执行结果:

 

 

 

*args 非键值对的可变数量的参数列表

def func_tuple(*args):
    """
    可变参数

    :param args: 非键值对的可变数量的参数列表
    :return:
    """
    logs.info("非键值对的可变参数列表:{}".format(args))


if __name__ == "__main__":
    """run"""
    func_tuple(1, 2, 3, 4)

 

 执行结果

 

  

**kwargs 键值对的可变数量的参数列表

def func_dict(**kwargs):
    """
    可变参数

    :param args: 非键值对的可变数量的参数列表
    :param kwargs: 键值对的可变数量的参数列表
    :return:
    """
    logs.info("键值对的可变数量的参数列表:{}".format(kwargs))


if __name__ == "__main__":
    """run"""
    func_dict(name="zhangsan", age="14")

 

执行结果

 

标签:__,Python,kwargs,args,键值,可变,参数
From: https://www.cnblogs.com/phoenixy/p/17272674.html

相关文章

  • python——list求交集、并集、差集
    https://blog.csdn.net/qq_41985134/article/details/122956104   ......
  • python学习(二)
    1Python中的标识符和保留字有的单词赋予了特定的意义,在给对象起名字时不能使用例如代码:importkeywordprint(keyword.kwlist)结果:['False','None','True','and......
  • python+playwright 学习-42 离线安装 playwright 环境
    前言有些同学可能是在公司局域网办公,无法连到外网去在线下载,本篇教大家在本地局域网部署好playwright环境playwright本地下载先找个有网络的电脑,下载playwright,不要......
  • 连接 AI,NebulaGraph Python ORM 项目 Carina 简化 Web 开发
    作者:Steam&Hao本文整理自社区第7期会议中13‘21″到44’11″的PythonORM的分享,视频见https://www.bilibili.com/video/BV1s8411N7Cw在做业务开发时,Nebula......
  • python_Package相关
    将自己的工作,构建为python的Package并上传至PYPI,使得其他开发者可以通过pip安装并使用。这是我一直想做的事情,最近我成功将微博数据采集项目封装并上传至PYPI。为使得后续......
  • Python自然语言处理基础实验2_基于HMM的中文分词
    实验目的了解并掌握基于隐马尔可夫模型(HMM)的分词方法,重点掌握Viterbi算法。实验要求1、对给定的语料库(或自行准备)进行统计分析,确定HMM模型的三个参数;2、根据上一步求得的......
  • Python编程必不可少的pytest测试框架
    进行编程测试重要的是为了更高效的完成功能的实现。pytest是基于unittest实现的第三方测试框架,比unittest更加的简洁、高效,并且可以完美兼容unittest的测试代码,无需对......
  • Python官方文档学习笔记
    原文:https://docs.python.org/3/tutorial/introduction.html版本:3.11.2UsingPythonasaCalculatorNumbersDivision(/)alwaysreturnsafloat.Todofloordivi......
  • 解决pip命令无法执行Python问题Unable to create process using...
    解决方法删除:Python37\Lib\site-packages\pip-19.1.dist-info删除:Python37\Scripts\pip*.exe(所有pip开头的)安装:python-mpipinstall--upgradepip......
  • [Python3]SM3国密算法
    fromgmsslimportsm4,sm3defsm3_hash(message:str):"""国密sm3加密:parammessage:消息值,bytes类型:return:哈希值"""msg_l......