Bendi新闻
>
python函数的万能参数
python函数的万能参数
4月前
我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数
def test(*args,**kwargs):
print(args,kwargs)
然后定义两个变量
l = [1,2,3,4]
d = {"a":1,"b":2}
下面我们分别看下两种传参的方式有什么不同
第一种方式
test(l,d)
如果是使用上面的方式传参,那么l,d这2个变量都会传递给args这个形参,作为args变量的两个元素,kwargs是一个空的字典,没有任何参数传递一个他
([1, 2, 3, 4], {'a': 1, 'b': 2}) {}
我们可以看到列表l和字典d被当做一个tuple的两个元素了
第二种方式
test(*l,**d)
如果是上面的方式传参,那么l这个变量就会被赋值给args,d这个变量就会被赋值给kwargs
(1, 2, 3, 4) {'a': 1, 'b': 2}
通过上面的演示,你应该基本上了解python的万能参数了吧,也知道如果函数使用万能参数,你应该如何进行传参了把
今天被搞糊涂了,又把万能参数梳理一下
大家先看下这个函数
def foo(action=None,**kwargs):
print("action",action,sep="=================>")
print("kwargs", kwargs, sep="=================>")
d = {"a":1,"b":2}
foo(d)
print("=".center(100,"*"))
foo(**d)
我执行的结果如下
下面我来解释一下
第一种调用函数的方式,传递了一个字典进去,这个字典会被当做一个整体传递进去,这个字典会被赋值给位置变了,也就是action
第二种调用函数的方法,通过**字典的方法传递进去,他实际是这样传递的a=1,b=2这样传递进去的,实际上一个命名变量,而这2个变量的名称都不action,所以第二中调用的方式的结果就是
action为none
kwargs就是一个字典
我们在看来下第三种调用的方法
d = {"action":"action","a":1}
foo(**d)
下面在看下结果,是否就明白了一些了
链接:https://www.cnblogs.com/python1111/p/14155604.html
(版权归原作者所有,侵删)
微信扫码关注该文公众号作者
来源:马哥Linux运维
相关新闻
吴恩达亲自授课,LLM当「助教」,适合初学者的Python编程课程上线Anaconda 新 AI 路线图:更快的 Python,更轻松地应用大模型淦!我2小时做的图表,那个会Python的实习生只用10分钟今日arXiv最热大模型论文:首个面向AI的python编程框架,提升大模型编程能力新思路统一所有模态的3D范式来了!Any2Point:仅需训练1%的参数量,超越SOTA!马斯克发全球最大开源模型!3140亿参数的Grok真打脸OpenAI了?一个 Python 的轻量级搜索工具一个决定宇宙命运的参数超级好用的Python模块——glob模块科学家提出三维共形设计方法,可精准设计复杂三维结构的材料参数港大鲁教授1v1科研: 基于模糊控制的PID参数整定|收获一作论文与导师推荐信!1890美元,就能从头训练一个还不错的12亿参数扩散模型Python最常用的15个内置模块总结。。。用Python复制文件的9个方法Python递归的几个经典案例30%参数达到92%的表现,大模型稀疏化方法显神通让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述imageio,一个Python处理图片的工具包刷个B站的功夫就把Python入门了,哈佛的线上课程,太强了!Textual:为 Python 增加漂亮的文本用户界面(TUI) | Linux 中国张唐:懂参数化建模的设计师优先录取比 Python 快 9 万倍的 Mojo 终于开源了!刚上线 star 已超过 1.7 万张唐景观:还得招懂参数化建模的设计师才行!Llama 3.1 源模型泄露背后:失手的 GitHub,破碎的 Meta,好在最小参数都能打脸GPT-4o!