首页 > 编程语言 >python函数传参时加2个星号**作用

python函数传参时加2个星号**作用

时间:2023-11-28 11:46:44浏览次数:38  
标签:传参 时加 name python 星号 info 参数 func test

一:问题

下面的代码

 1 def test_func(*args, **kwargs):  
 2     print(f"argsType={type(args)},args={args}")  
 3     print(f"kwargsType={type(kwargs)},kwargs={kwargs}")  
 4   
 5 content1 = 11  
 6 content2 = 22  
 7 info ={"name":"mmkx","age":2}  
 8 
 9 test_func(content1,content2,info)  
10 test_func(content1,content2,**info)

我们常常见到方法像第1行这样定义:1个星为可变参数,2个星为关键字参数
这里第9行和第10行的info加不加2个星传入有什么区别?传值的时候到底什么情况要加星什么情况不加星号呢?

 

二:解答

传参加2个星的意思是:将字典转换为关键字参数
即将info ={"name":"mmkx","age":2} 转成 name=mmkx,age=2

 

三:解释说明

1、传参加不加2个星号的区别:

这里第一个参数*args是可变参数,支持传入任何参数类型,不过传入的参数类型都会被改变,会把它改成元组
这里第二个参数**kwargs是关键字参数,只支持传入k=v的参数格式和字典参数类型,不支持传其他参数类型,对于字典参数类型传入时需要前面加上**,目的是为了将字典转成k=v关键词的形式

 

也就是说:

1 content1 = 11  
2 content2 = 22  
3 info ={"name":"mmkx","age":2}  
4 
5 test_func(content1,content2,info)  
6 test_func(content1,content2,**info)

第5行的结果是:(11,12,{"name":"mmkx","age":2})
第6行的结果是:(11,12)和{'name': 'mmkx', 'age': 2}

 

2、传参只加一个星号会怎样?

加1个星号,则会将这个星号后面的参数依次遍历,在转成元组
也就是说:

1 content3=99  
2 content4=[3,4,5]  
3 test_func(content3,content4)
4 test_func(content3,*content4)

第3行的结果是:(99,[3,4,5])
第4行的结果是:(99,3,4,5)

 

四:总结

传参时:
1. 如果你想将可迭代对象展开为可变参数,则加一个※号
2. 如果你想将字典转成关键字参数,则加2个※号
3. 都不是,则不用加※号

标签:传参,时加,name,python,星号,info,参数,func,test
From: https://www.cnblogs.com/miaomiaokaixin/p/17861531.html

相关文章

  • Python爬虫爬取wallhaven.cc图片
    话不多说,直接上代码!1importtime2importrandom3importuuid45fromlxmlimportetree6importos7importrequests8importthreading9fromqueueimportQueue10fromtqdmimporttqdm11fromconcurrent.futuresimportThreadPoolExecutor121......
  • python--变量和简单数据类型
    Python--变量和简单数据类型目录Python--变量和简单数据类型一、Python脚本运行过程二、变量1、变量的命名和使用2、python关键字和内置函数2.1、python关键字2.2、python内置函数3、使用变量时避免命名错误4、变量是标签三、字符串1、使用方法修改字符串的大小写2、在字符串中使......
  • python中pip下载慢或报错的解决方法
    一:问题python的pip在安装包时,有时会报错超时,排除包名写错的原因,一般这种问题是因为网络下载过慢,导致超时 二:解决方案我们可以设置pip镜像源下载,能够提升pip下载速度,解决报错问题具体操作是把全局的镜像地址设置成阿里云服务:pipconfigsetglobal.index-urlhttps://mirror......
  • 根据累进税率计算每月个人所得税 python代码
    使用时将工资、社保和公积金替换即可,累进税率表和起征点根据所在当地调整importnumpyasnp#累进税率表:交税比例及速算扣除数tax_rates={36000:{"tax_rate":0.03,"quick_deduction":0},144000:{"tax_rate":0.1,"quick_deduction":2520},300000:{&quo......
  • Python之Http服务设置跨域请求
    Http服务设置跨域请求跨域是什么就不在此进行赘述了,百度一下,你就知道。flask的处理方法flask中处理跨域很简单,只需要在flask的app对象中注册函数处理:app.after_request(after_request)其中的after_request即为处理跨域的函数,当请求处理完成,还未响应给客户端之前,flask会......
  • python pandas绘图
    pandas绘图导包importmatplotlib.pyplotasplt#进行图形绘制的常用模块。#结合Pandas和Matplotlib.pyplot,您可以在数据分析和可视化方面有更多的灵活性。折线图#折线图s=pd.Series([100,200,300,200,150,80])s.plot()使用了Pandas的Series对象,并调用了其......
  • python基础 类(二) 类的封装与属性隐藏
    封装创建一个实例对象后,事先定义在类的函数就成为该实例对象的函数即方法,事先定义在类中绑定在self上的变量成为该实例对象的数据,各个实例对象的方法和数据是互相独立的,互干扰影响类的实例对象可以调用函数即方法,这样通过方法来访问或者修改属于该实例对象的数据,就是所谓......
  • Python用偏最小二乘回归Partial Least Squares,PLS分析桃子近红外光谱数据可视化
    全文链接:https://tecdat.cn/?p=34376原文出处:拓端数据部落公众号PLS,即偏最小二乘(PartialLeastSquares),是一种广泛使用的回归技术,用于帮助客户分析近红外光谱数据。如果您对近红外光谱学有所了解,您肯定知道近红外光谱是一种次级方法,需要将近红外数据校准到所要测量的参数的主要......
  • R语言和Python对copula模型Gaussian、t、Clayton 和 Gumbel 族可视化理论概念和文献计
    原文链接:http://tecdat.cn/?p=27240 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于copula的研究报告,包括一些图形和统计输出。本文包含一些直观的示例来说明copula理论的核心概念。以下是脚本及其各自用途的简短列表:首先演示如何使用高斯copula来模拟具有任意......
  • Python实现完全二叉树
    给定一个元素序列(如列表),递归的创建一颗完全二叉树完整代码如下#!/usr/bin/envpython3classTreeNode:"""Nodeofcompletetree"""def__init__(self,data=0):self.data=dataself.left=Noneself.right=Nonedefb......