不定长(可变) 位置参数 *args和关键字参数 **kwargs 详解

news2024/9/20 11:23:17

位置参数: 

传参时前面不带 "变量名=", 顺序不可变, 按顺序赋给相应的局部变量
def test(one,two,three):

   print(one - two * three)


test(1,2,3)  

  

 

def test(one,two,three):

   print(one - two * three)


test(3,2,1) 

  注意位置参数,需要注意 1 、 不用带 变量名 2、 实参和形参位置必须一致,否则会产生不同的结果

关键字参数:

关键字参数(keyword): 传参时前面加上 "变量名="
def test(name,age,sex):
    print(name,age,sex)


test(name="myy",age=22,sex="men")


def test(name,age,sex):
    print(name,age,sex)


test(age=22,sex="men",name="myy")

 注意关键字参数:

1、通过“键-值”形式加以指定  2、不要需要关注传入参数的顺序

不定长位置参数和关键字参数

形制: 

位置参数*args和关键字参数 **kwargs

称为不定长的原因,是因为我们可以给函数传入任意长度的参数,甚至不传也可以

def test(*args):  # 形参这里可以接受任意数量的参数

   print(args[0] - args[1] * args[2])
   print(type(args))
# 任意长度位置参数
test(1,2,3) 
def test(**kwargs):
      for key, value in kwargs.items():
           print(f'{key}:{value}')

# 任意长度关键字参数
test(name="myy",age=22,sex="men")

 我们在这里重点探讨的python的不定长(可变)位置参数和关键字参数。

在 python中不定长参数被称为可变参数,可变参数分为 *args 和  **kwargs,通常会在args和kwargs这两个单词前面添加,* 和 ** ,这是很关键的,但是对于* (星号)后面的单词是任意的,args 和 kwargs是开发者默认的命名约定,当然我们可以写成 *var 和 **var。
*args :
# 接受的是位置参数,和普通传参没有区别重要的是数量
   *args 允许将不定长的参数列表给函数实参或者形参
def test1(*args):

   for v in args:
      print(f" this is a{v}")
   print(type(args))


test1(1,2,3)

output:

     this is a1
     this is a2
     this is a3
     <class 'tuple'>

**kwargs 允许你将不定长的键值对,作为参数传递给一个函数,如果你想要在一个函数里处理带名字的参数,你应该使用**kwargs
 def greet_me(**kwargs):
          for key, value in kwargs.items():
                 print(f'{key}:{value}')

greet_me(name = 22)

output:  

    name:22

关于位置参数和可变参数在函数调用时,使用顺序

def greet_me(flag, *args, name,**kwargs):
          # 位置参数:调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。
          print(flag)
          # 可变位置参数  有时候我们不确定调用的时候会传递多少个位置参数
          print(args)
          print(args[0] - args[1] * args[2])
          # 关键字参数 用于函数调用,通过键值对的方式,key=values
          print(name)
          # 可变关键字参数 有时候我们不确定调用的时候会传递多少个关键字参数
          for key, value in kwargs.items():
                 print(f'{key}:{value}')
# 混合传参时关键字参数必须在位置参数之后。
greet_me(11, 22, 33, 44, name = "Adien", age = 22 ,CLass="大数据2003")

 

总结:

这些知识挺难的,我反复学习了多次才有所感悟,往往需要查询很多资料,所以有些知识难不易理解是正常现象,没关系的尽最大努力去实践,遗忘就去查找,反复学习就会理解的更加深刻。

比如今天: 我想了解的是,局部变量和全局变量是什么,如何使用

在定义函数中:

*args  收集所有未匹配的位置参数组成一个tuple对象,参数收集所有未匹配的位置参数: 这里我理解,后面组成一个tuple对象,这里我就不明白什么意思了,它是如何组成的为什么组成。

非常感谢以下作者提供关于位置参数 *args和关键字参数 **kwargs 讲解资料:

位置参数、关键词参数;默认参数,可变参数区别    作者: hamimelon2020
http://t.csdn.cn/UfE4y
Python函数 — 可变参数 *args 和 **kwargs  作者: 笃行之.kiss

http://t.csdn.cn/FFNwP

《Intermediate Python》  作者: @yasoob

《Python进阶》 (pythontab.com)

Python中的*args和**kwargs    作者: 百晓生

https://zhuanlan.zhihu.com/p/50804195

 

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

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

相关文章

STM32外设系列—BH1750

文章目录 一、BH1750简介二、BH1750原理图三、BH1750数据手册3.1 指令集3.2 IIC通信读/写 四、BH1750程序设计4.1 IIC程序4.2 BH1750初始化程序4.3 读取BH1750测量结果4.4 获取光照强度4.5 相关宏定义 五、应用实例六、拓展应用6.1 实时调节LED亮度6.2 实时调整颜色阈值 一、BH…

【Flutter】 Flutter 状态管理 BLoC 简明使用指南

文章目录 一、前言二、Flutter BLoC 的安装和配置三、Flutter BLoC 的基本使用四、Flutter BLoC 的简单示例五、总结 一、前言 &#x1f389;想要精通 Flutter&#xff0c;掌握更多技巧和最佳实践&#xff1f;好消息来了&#xff01;&#x1f449; Flutter专栏->Flutter De…

波动率预言机:开启新的DeFi风险管理策略和衍生市场

Chainlink 喂价一直是 DeFi 生态系统的基础构建块&#xff0c;为越来越多的加密货币、大宗商品和法定货币提供准确、防篡改和聚合的价格参考数据。高质量的价格数据的可用性在 DeFi 的增长过程中起到了重要作用&#xff0c;使其总锁定资产价值在高峰期达到了 1700 亿美元&#…

基于云计算技术B/S架构的医院信息管理系统源码(HIS)

云HIS系统源码&#xff0c;采用云端SaaS服务的方式提供 基于云计算技术的B/S架构的云HIS系统&#xff0c;采用云端SaaS服务的方式提供&#xff0c;使用用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、配置化、智能…

MySQL基础之概述

MySQL 启动、终止 //以管理员身份运行cmd net start mysql80 net stop mysql80客户端连接 客户端cmd “开始”找到MySQL 环境变量普通cmd mysql [-h 127.0.0.1] [-P 3306] -u root -p mysql -u root -p[ ] 内的参数可省略&#xff0c;若连接本地MySQL&#xff0c;则无需指定…

机器学习笔记 - 结合深度学习的基于内容的图像实例检索 利用现成的DCNN模型进行检索

一、简述 上一篇,基于内容的图像实例检索综述。 https://mp.csdn.net/mp_blog/creation/editor/131415155https://mp.csdn.net/mp_blog/creation/editor/131415155 一种方案是,为分类任务而进行大规模训练的DCNN直接充当图像检索任务的现成特征检测器,也就是说,可以…

Live800:为什么越来越多的企业选择在线客服系统?

现今&#xff0c;越来越多的企业开始使用在线客服系统&#xff0c;这是因为互联网时代已经席卷全球&#xff0c;企业需要尽可能地利用新技术&#xff0c;优化客户体验和服务。一个强大的在线客服系统可以帮助企业实现客服信息的统一管理&#xff0c;这样可以为企业带来巨大的好…

Vue Router 相关理解 基本路由 多级路由

6.1.相关理解 6.1.1.vue-router 的理解 vue的一个插件库&#xff0c;专门用来实现SPA应用 6.1.2.对SPA应用的理解 单页Web应用&#xff08;single page web application&#xff0c;SPA&#xff09;整个应用只有一个完整的页面点击页面中的导航链接不会刷新页面&#xff0c…

Find My资讯|苹果Find My技术应用于车内丢失设备

美国专利商标局正式授予苹果两项泰坦项目新专利&#xff0c;分别是扩展其针对车内丢失设备的“Find My”设备服务&#xff0c;以及用于自动驾驶汽车的高级传感器系统&#xff0c;其中传感器系统还涵盖了带有摄像头系统的车辆&#xff0c;而摄像头系统除可3D重建场景之外&#x…

通过网络流量监测分析解决堡垒主机部署后未经授权访问的3389端口问题

1. 前言 堡垒主机是网络安全的重要组成部分&#xff0c;但在部署后仍可能存在一些主机可以绕过堡垒主机直接访问之前的3389端口。本文将介绍如何利用网络流量监测分析方法解决这个问题&#xff0c;提供一种有效的解决方案&#xff0c;加强对网络的访问控制和安全监测。 2. 网…

[NOI2016] 网格

题目描述 跳蚤国王和蛐蛐国王在玩一个游戏。 他们在一个 &#xfffd;n 行 &#xfffd;m 列的网格上排兵布阵。其中的 &#xfffd;c 个格子中 (0≤&#xfffd;≤&#xfffd;⋅&#xfffd;)(0≤c≤n⋅m)&#xff0c;每个格子有一只蛐蛐&#xff0c;其余的格子中&#xff…

小红书美妆品牌投放流程有哪些,品牌规划

越来越多的品牌开始重视新媒体&#xff0c;很多品牌和商家纷纷将目光瞄准了小红书&#xff0c;但是由于各平台都有自己的规则&#xff0c;盲目踏入不熟悉的领域肯定是有点冒险的。那么小红书美妆品牌投放流程有哪些&#xff0c;以及品牌规划。 小红书品牌投放指南是指小红书平台…

享元模式(Flyweight)

别名 缓存&#xff08;Cache&#xff09;。 定义 享元是一种结构型设计模式&#xff0c;它摒弃了在每个对象中保存所有数据的方式 &#xff0c;通过共享多个对象所共有的相同状态&#xff0c;让你能在有限的内存容量中载入更多对象。 前言 1. 问题 假如你希望在长时间工作…

互联网+洗鞋店软件多门店多网点预约下单小程序

互联网洗鞋店软件小程序功能介绍: 1.用户端&#xff08;上门取件、送货到店、寄存网点&#xff09; 2.取货员端&#xff08;取件员拍照&#xff0c;清洗过程&#xff0c;包装拍照&#xff09; 3.多门店管理&#xff08;用户进入小程序&#xff0c;根据定位自动匹配就近门店&…

Golang每日一练(leetDay0106) 超级丑数、右侧小于当前元素的个数

目录 313. 超级丑数 Super Ugly Number &#x1f31f;&#x1f31f; 315. 计算右侧小于当前元素的个数 Count-of-smaller-numbers-after-self &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练…

easypoi 导出word并插入echart图片和文件

一 pom 文件引入&#xff1a;<!-- 目前的版本对应 poi 4.1.2 和 xmlbeans 3.1.0 , poi 3.17 和 xmlbeans 2.6.0 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version&…

新人必看的Java基础知识点大梳理

一个Java程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象&#xff1a;对象是类的一个实例&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它的状态有&…

树莓派Pico|SHELL中microPython命令行|pico sdk开发环境搭建|点灯代码|必备开发工具|gcc涉及的include文件目录

文章目录 SHELL中microPython命令行SHELL中基于microPython的控制代码Hello Pico 代码SHELL中简单点灯代码SHELL中循环亮灯代码 基于pico sdk开发环境搭建及点灯代码必备开发工具Mingw-w64&#xff1a;著名C/C编译器GCCarm-none-eabi&#xff1a;交叉编译工具Git&#xff1a;开…

js翻转数组

arr [red, green, "blue", "pink", "purple"];var arr1 [];for (var i 1; i < arr.length; i) {console.log(arr1.length)arr1[arr1.length] arr[arr.length - i];console.log(arr1.length)}console.log(arr1);

echarts饼装图自定义图例和扇形区的文字

最近因为工作需要&#xff0c;需要开发一个大屏&#xff0c;后台给的数据是这个的&#xff0c;echarts是默认将数据data例的name属性作为图例和扇形图上展示文本&#xff0c;这里我需要自定义图例信息和内容&#xff0c;通过这篇文章&#xff0c;记录下如何修改这些内容&#x…