小白入门之args, *args, **kwargs

news2025/1/19 11:12:48

目录

一、介绍:

二、实例:

2.1 args

2.2 *args

2.2.1 基础版

2.2.2 进阶版

2.3 **kwargs

2.4 *args 和**kkwargs连用



一、介绍:

首先,不是必须写成*args**kwargs,只有变量前面星号*才是必须的。也可以写成*vars**kwvars,写成*args**kwargs只是一个通俗的命名约定。

具体地,

  • args: args 是一个常规的参数列表,表示函数接收的位置参数,可以包含零个或多个参数,由逗号分隔。即一个args表示一个参数
  • *args: *args 是一个特殊的参数,用于接收任意数量的位置参数,并将它们作为一个元组传递给函数。在函数定义时,可以使用 *args 来接收多个不定长的位置参数,然后对它们进行处理。在调用函数时,可以使用 * 运算符将一个可迭代对象解包成多个单独的参数,然后将它们传递给函数。*args表示的是一个任意长度的元组,即预先并不知道,函数调用时会传递多少个参数
  • **kwargs: **kwargs 是另一个特殊的参数,用于接收任意数量的关键字参数,并将它们作为一个字典传递给函数。在函数定义时,可以使用 **kwargs 来接收多个不定长的关键字参数,然后对它们进行处理。在调用函数时,可以使用 ** 运算符将一个字典解包成多个单独的关键字参数,然后将它们传递给函数。 *kwargs传入的是一个任意长度的字典,即预先并不知道,函数调用时会传递多少个参数

二、实例:

2.1 args

args只是一个普通的参数名,可以用任何符合命名规则的符号替换,比如下面的x,y

def sum(x,y):
    z = x+y
    return z

sum(1,2)

2.2 *args

2.2.1 基础版

*args表示传入不定长度的元组。

def sum(*args):
    sum = 0
    for arg in args:
        sum = sum + arg
    return sum
t1 = sum(1)
t2 = sum(1,2)
t3 = sum(1,2,3)
print("t1,t2,t3的结果分别是:{},{},{}".format(t1, t2,t3))

 运行结果

 从运行结果可以看出: t1的时候,*args传入的是长度为1的元组,t2的时候,表示传入的是长度为2的元组,t3的时候,表示传入的是长度为3的元组。具体运行结果如图。

2.2.2 进阶版

def test_args(f_arg, *args):
    print('args的数据类型:', type(args))
    print('第一个位置参数:', f_arg)
    for arg in args:
        print('通过*args传递的参数:', arg)

test_args('linux', 'python', 'web', 'sql')

 运行结果

 分析:

代码将四个参数传入test_args函数。第一位的参数会作为f_args的参数传入,后面的三个参数,会自动变成一个长度为3的元组,作为*args参数传入。

2.3 **kwargs
 

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="John", age=30, city="New York") # 输出 name: John, age: 30, city: New York

 运行结果

2.4 *args 和**kkwargs连用

如果某个函数需要能够同时接受任意数量的位置参数和关键字参数,可以同时使用*args**kwargs
但是需要注意的是参数的位置*args要放在函数定义中最后一个位置参数后面,**kwargs要放在函数定义中所有参数的最后面,在*args后面仍然可以定义其他参数,但在*args后面定义的参数,函数调用时需使用关键字参数传参。

def any_args1(*args, name, **kwargs):
    print(args)
    print(name)
    print(kwargs)

def any_args2(*args, name='ting', **kwargs):
    print(args)
    print(name)
    print(kwargs)

any_args1('test', 1, name='ting2', two=2)
print("=======================")
any_args2('test', 1, two=2)
print("=======================")
any_args2('test', 1,  name='you', two=2)
print("=======================")
any_args2('test', 1, name='ting3', one=1, two=2)

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[前端基础]promise的基本使用(包括async,await语法糖)

目录 1.什么是promise 2.关于promise对象 3.promise常用API 4.promise链式调用 5.async和await语法糖 1.什么是promise 众所周知,在以往,我们处理异步操作主要是通过回调函数处理 setTimeout(()>{},100); 例如这个定时器,异步操作会通过时间循环队列实现. 但是比如说…

PID控制---基于python模拟

PID是控制中非常经典的一个模型,利用P(比例)、I(微分)、D(积分)三者相互合作来实现对一个信号的闭环控制,同时可以让信号波形平滑变化而不是突变。以下主要是结合一个python实现的控制速度的程序来模拟PID的过程。 参考博客:电机控制进阶——…

SOA与中间件、基础件的发展

应运而生的SOA   美国著名的IT市场研究和顾问咨询公司Gartner预测:到2006年,采用面向服务的企业级应用将占全球销售出的所有商业应用产品的80 以上到2008年,SOA将成为绝对主流的软件工程实践方法。近几年全球各大IT巨头纷纷推出自己的面向服务的应用平…

WordPress切换为经典编辑器可视化/文本切换不显示解决方法

WordPress文章编辑器切换为经典编辑器可视化/文本状态无法切换消失的问题有用户遇到过,出现这样的问题时,我们首先应该回忆一下,之前自己进行了哪些操作导致这种情况的出现,比如: 更换了新主题? 安装了新插…

软考高项 - 计算公式汇总整理

大家好,我是陈哈哈,我准备参加23年5月份的软考信息项目管理师考试,学习之余还是习惯做一些重点、考点的记录,用于自己复习,以及分享给日后考试的考友,啥都不说了,祝通过🌹&#x1f3…

【设计模式】UML类图与软件设计原则

1,设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大(Christopher Alexand…

Docker基础学习1

Docker 1 Docker简介 1.1 什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来&…

数字温度传感器-DS18B20

文章目录 一、DS18B20器件图二、DS18B20特点三、DS18B20内部结构内部构成 四、工作时序1.初始化时序2.ReadOneChar2.WriteOneChar 一、DS18B20器件图 DS18B20的管脚排列: GND为电源地;DQ为数字信号输入/输出端;VDD为外接供电电源…

【车载助手形象系列二】---车载助手数智人形象制作可以使用AI绘图替代?

上期分享了《车载助手形象系列:数智人入门级介绍》,本期主要讲解下数智人形象制作过程 数字人形象 数智人覆盖了卡通、二次元、写实等多元化风格的虚拟形象,可高精度还原表情和躯干动作,提供涵盖人物设计、3D制作、内容制作、IP运…

深度学习之torchvision、多层感知器与激活函数

文章目录 1 torchvision库与加载内置图片数据集2 多层感知器3 激活函数3.1 ReLU激活函数3.2 Sigmoid激活函数3.3 Tanh激活函数3.4 LeakyReLU激活函数 学习笔记 1 torchvision库与加载内置图片数据集 torchvision库是PyTorch中用来处理图像和视频的一个辅助库,提供了…

Docker部署文本语义检索系统

Docker 部署 pipelines服务 需求:基于docker部署百度飞桨公开项目pipelines服务之 端到端文本语义检索系统 项目链接:https://aistudio.baidu.com/aistudio/projectdetail/3351784?channelType0&channel0 代码地址:https://gitee.com/pa…

03 Kubernetes 系统快速入门

课件 Kubernetes 中的 ownerReference 字段用于建立资源之间的所有者关系,即父子关系。这个字段可以用来指定一个资源是另一个资源的所有者。例如,一个 Deployment 可以拥有多个 Pod,这些 Pod 就可以通过 ownerReference 字段引用到对应的 De…

D. Maximum Distance(最小生成树)

Problem - D - Codeforces Chouti已经厌倦了乏味的作业,于是他打开了数年前创建的一个旧编程问题。 给定一个具有n个节点和m条加权边的连通无向图。其中有k个特殊节点:x1,x2,...,xk。 现在定义路径的成本为其边权的最大值。两个顶点之间的距离定义为连…

从C出发 29 --- 指针与函数

只有知道具体位置,才有可能跳到那个位置去执行,如果不知道在哪里,怎么跳? 函数是什么? 函数就是一片连续的内存 数组是什么? 数组就是一片连续的内存 很显然,这一片连续的内存当中&#xff0c…

百度智能云六大产品系列将率先基于大模型升级,加速全面智能化

百度智能云在上海召开文心一言技术交流会。百度集团副总裁袁佛玉表示,大模型的技术突破,使得全球性的“AI再造”已经拉开序幕。在技术底座层面,百度智能云拥有全栈自研的AI大底座;在大模型平台层面,拥有全球首个一站式…

OSGI详解

最近项目用到了OSGI,第一反应就是什么是OSGI? OSGI是一个为Java提供动态模块化的系统; 准确的说,OSGI是一个标准,一个框架,也可以理解为一个容器,具体的实现有Eclipse下的Equinox和Appach下的Fe…

18. Unity - 2D游戏开发小记01 --- 瓦片地图搭建基本操作

1. 瓦片地图创建(Tilemap) 在2D游戏开发中,瓦片地图就是游戏中的场景或者说游戏背景,可以使用把图片资源制作成Tiles,然后在游戏场景中搭建2D游戏的背景即可。 效果展示: 规则瓦片制作 首先在 Hierarchy层级窗口中右键鼠标,依次选择 2D Object → Tilemap → Rectan…

SpirngMVC的创建和使用

SpirngMVC的创建 SpringMVC的创建很容易。 步骤:创建SpringBoot项目,并在添加依赖时,添加Spring Web。 SpringMVC的创建就完成了。 创建SpringBoot项目详情:SpringBoot项目创建和使用_追梦不止~的博客-CSDN博客 S…

lua元表、元方法

lua元表、元方法 lua官方参考手册:https://www.runoob.com/manual/lua53doc/manual.html#2.4 一、总结: ☺ 1、普通的表,找不到了,或者无法进行运算的时候,考虑设置到它身上的元表的元方法 2、元表的本质&#xff1a…

JavaWeb03(域对象EL表达式JSTL标签)

目录 一.jsp内置对象之域对象 1.1 什么是jsp的内置对象? JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。一共有9个: 分别为request、response、session、application、out、pageContext、confi…