pytho传参kwargs及用法详解

 更新时间:2024年05月27日 15:08:38   作者:weixin_42924890  
这篇文章主要介绍了pytho传参kwargs及用法,函数传参的时候简化传参形式,无需指定参数名,本文结合实例代码讲解的非常详细,需要的朋友参考下吧

pytho传参kwargs

Python代码中有很多类似的用法,第一次接触的时候还是有很多疑惑的,为了方便记忆,因此梳理了一下。

# 使用模型进行推理
with torch.no_grad():
    outputs = model(**encoded_texts)

对于一个dict类型的变量**encoded_texts是取出value的值,而不考虑键。

def test_func(**kwargs):
    a = kwargs["a"]
    b = kwargs["b"]
    print(a)  # [1, 2, 3]
    print(b)  # hello test
dct = {"a": [1, 2, 3], "b": "hello test"}
test_func(**dct)

函数传参的时候简化传参形式,无需指定参数名。

Python 函数的参数传递 *args和 **kwargs

知识点:

  • 在函数调用时,*会以单个元素的形式解包一个元祖,使其成为独立的参数。
  • 在函数调用时,**会以键/值对的形式解包一个字典,使其成为独立的关键字参数。
def f(a,*args):
    print(args)

f(1,2,3,4)
​```
输出为:(2, 3, 4)
​```

虽然传入1,2,3,4,但是解包为(1),(2,3,4),其中a是1,args是剩下的。

在python中,当*和**符号出现在函数定义的参数中时,表示任意数目参数。*arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict,使用时需将arg放在*kwargs之前,否则会有“SyntaxError: non-keyword arg after keyword arg”的语法错误。

再看看**kwargs的参数传递的例子

def f(**kargs):
    print(kargs)
f(a=1,b=2) # 实际传入参数是两个,但是给包裹在一起
​```output:
{'a': 1, 'b': 2}
​```
def person(name,age,**kw):
    print('name:',name,'age:',age,'other:',kw)
# 传入4个参数,自动将后两位  拼接到成字典
person('Adam', 45, gender='M', job='Engineer')
​```output
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
​```

再看看*args 和 **kwargs混合的例子

def h(a,*args,**kwargs):
    print(a,args,kwargs)
h(1,2,3,x=4,y=5)
# 丢进去不确定参数的包裹:1,2,3,x=4,y=5
# 解包:1                    -a
# 解包:(2,3)               -*args
# 解包:{'x': 4, 'y': 5}     -**kwargs
​```output
1 (2, 3) {'x': 4, 'y': 5}
​```

到此这篇关于pytho传参kwargs的文章就介绍到这了,更多相关pytho传参kwargs内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现甘特图绘制的示例详解

    Python实现甘特图绘制的示例详解

    相信在平常实际工作当中,需要对整体的项目做一个梳理,这时如果有一个网页应用能够对整体项目有一个可视化页面的展示,是不是会对你的实际工作有所帮助呢?今天小编就通过Python+Streamlit框架来绘制甘特图并制作可视化大屏,需要的可以参考一下
    2023-04-04
  • Python+AI实现给老照片上色

    Python+AI实现给老照片上色

    今天给大家分享一个有趣的AI项目——利用NoGAN的图像增强技术给老照片着色,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • 理解Python中的global与nonlocal关键字

    理解Python中的global与nonlocal关键字

    本文主要解释了Python中global和nonlocal关键字的作用和用法,global关键字用于修改全局变量,但要谨防破坏封装性;nonlocal关键字用于修改外部嵌套函数中的变量,适用于闭包和装饰器场景,两者各有使用场景,使用时需注意变量作用域和定义情况
    2026-04-04
  • Python基于进程池实现多进程过程解析

    Python基于进程池实现多进程过程解析

    这篇文章主要介绍了Python基于进程池实现多进程过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • TensorFLow 数学运算的示例代码

    TensorFLow 数学运算的示例代码

    这篇文章主要介绍了TensorFLow 数学运算的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python进程间通讯与进程池超详细讲解

    Python进程间通讯与进程池超详细讲解

    进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块主要通过队列方式,队列:队列类似于一条管道,元素先进先出,需要注意的一点是:队列都是在内存中操作,进程退出,队列清空,另外,队列也是一个阻塞的形态
    2022-12-12
  • python将数据插入数据库的代码分享

    python将数据插入数据库的代码分享

    在本篇文章里小编给大家整理的是关于python将数据插入数据库的代码内容,有兴趣的朋友们可以参考下。
    2020-08-08
  • Python Flask 实现 HTML 文件压缩案例代码(9 级压缩)

    Python Flask 实现 HTML 文件压缩案例代码(9 级压缩)

    这篇文章主要介绍了Python Flask 实现 HTML 文件压缩案例代码(9 级压缩),本案例是基于 Python Flask 进行搭建,所以需要提前搭建一个 Flask 项目环境,有 app.py 文件和 templates/index.html 文件即可,需要的朋友可以参考下
    2023-01-01
  • Python中的集合类型知识讲解

    Python中的集合类型知识讲解

    这篇文章主要介绍了Python中的集合类型知识讲解,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Python简单几步画个钻石戒指

    Python简单几步画个钻石戒指

    这篇文章主要介绍了Python简单几步画个钻石戒指,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09

最新评论