详说Python风格的函数分配参数
一、分配参数的定义

参数收集就是在定义函数时不能确认参数个数,用收集参数将调用时不确定数量的实参存放到收集参数的元组中。分配参数与此过程相反,它不是在定义函数形参时使用星号(1个或2个),而是在调用函数传递实参时使用星号(1个或2个)来传递多个参数。

二、分配参数的使用

1.使用1个星号的分配参数

使用1个星号的实参时,实参为一个元组、列表、字典或集合,该实参内的元素将按参数顺序传递给函数,但由于字典实际传值取的是键,集合的元素没有顺序,因此不建议使用字典和集合传值。

举例:

>>> def ?cal(calmethod,number1,number2,*numbers):

print('number1=',number1,',number2=',number2,',numbers=',numbers,', calmethod=',calmethod)

>>> paras=('+',1,2,3,4) #元组分配参数传值
>>> cal(*pars)
number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +
>>> paras=['+',1,2,3,4]
>>> cal(*paras) #列表分配参数传值
number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +
>>> paras={'+',1,2,3,4}
>>> cal(*paras) #集合分配参数传值,顺序变化了
number1= 2 ,number2= 3 ,numbers= (4, '+') , calmethod= 1
>>> paras={'+':10,1:20,2:30,3:40,4:50}
>>> cal(*paras) #字典分配参数传值,取的是键作为参数
number1= 1 ,number2= 2 ,numbers= (3, 4) , calmethod= +
从上面的例子可以看出,一个星号的收集参数可以通过1个星号的分配参数方式传值。

分配参数实际上就是将实参传递的序列数据解包给对应形参的过程。

2.使用2个星号的分配参数

使用2个星号的实参时,实参为一个字典,该字典内的元素将按关键字参数模式传递给函数,其中的键为关键字参数,值为关键字参数对应的实参值。使用这种模式要求该实参位于参数列表末尾。还是以上面函数为例:

\>>> paras={'calmethod':'+','number1':1,'number2':2,'numbers':[3,4,5]}
\>>> cal(**paras) #报错遇到没有预期的关键字参数'numbers'
\>>> paras={'calmethod':'+','number1':1,'number2':2,'numbers':(3,4,5)}
\>>> cal(**paras) #报错遇到没有预期的关键字参数'numbers'
\>>> paras={'calmethod':'+','number1':1,'number2':2,'*numbers':(3,4,5)}
\>>> cal(**paras) #报错遇到没有预期的关键字参数'*numbers'
\>>> paras={'calmethod':'+','number1':1,'number2':2}
\>>> cal(**paras)
number1= 1 ,number2= 2 ,numbers= () , calmethod= +
从上面的案例可以看出来:

1) 两个星号的参数分配不能给两个星号的收集参数传值,因为这没有意义,还不如直接使用形参为字典类型实参是字典数据进行操作。

2) 分配参数模式和收集参数模式可以并存,如上面的例子,但这种使用方式意义不大,一般不建议使用。

python 中的正则表达式怎么使用
在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑。

代码如下

import re
str="a b c d"
regex0=re.compile("((\w+)\s+\w+)")
print(regex0.findall(str))
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(str))
regex2=re.compile("\w+\s+\w+")
print(regex2.findall(str))
输出结果

[('a b', 'a'), ('c d', 'c')]
['a', 'c']
['a b', 'c d']
可能结果有点意外,下面解释一下

第一个正则表达式中是带有2个括号的,我们可以看到其输出是一个list 中包含2个 tuple

第二个正则表达式中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。

第三个正则表达式中不带有括号,其输出的内容就是整个表达式所匹配到的内容。

结论:findall()返回的是括号所匹配到的结果(如regex1),多个括号就会返回多个括号分别匹配到的结果(如regex),如果没有括号就返回就返回整条语句所匹配到的结果(如regex2)。所以在提取数据的时候就需要注意这个坑。

实际上是由其并不是python特有的,这是 正则 所特有的 , 任何一门高级语言使用正则都满足这个特点:有括号时只能匹配到括号中的内容,没有括号【相当于在最外层增加了一个括号】。在正则里面 “()” 代表的是分组的意思,一个括号代表一个分组,你只能匹配到"()"中的内容。

Prada即将推出第9个时间胶囊#NFT# 系列。

这是Prada第38个实体Timecapsule系列,也是第9个NFT系列。在设计方面,实物产品是一件取材于摄影师Enzo Ragazzini 70年代作品的印花衬衫。这是第二次(共三次)同主题系列产品,名为 "Interferenza Ottica Art Print by Enzo Ragazzini 1975"。

每件衬衫都伴随着一个带有相同特征的NFT。这些数字资产也是进入Prada Crypted NFT独家社区的准入证。在那里,用户可以享受独家数字和现实生活的体验。例如,今年一位幸运的Prada NFT持有者将获得于2月23日举行的2023年秋冬女装时装秀的VIP邀请函。


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 日支为配偶宫,本来要坐一个财星,财却被劫走了,婚姻会好吗?2022年时我写过一篇文章《经营夫妻关系,不要大包大揽》这篇文章写得真是太好了以至于今天当我动笔想写小
  • 今天第18天了我感觉我还是没有适应麻麻的角色 他一哭一哇哇叫我就觉得刺耳烦躁 怎么会这么能哭 只是泡个奶粉的时间而已就能给你哭的方圆十里都能听到 哭的嘴唇在哆嗦
  • 范宝银用他精湛的技艺,高品质的服务,践行着央企员工的责任使命,也尽己所能守护着辖区孤寡老人的心。范宝银用他精湛的技艺,高品质的服务,践行着央企员工的责任使命,也
  • 同时,注意总结民族医药战胜疫情的成功经验,进一步传承、应用好中(民族)医药的抗疫成果,不辜负党和人民对我们的信任”!【专题协商议事月 |贴心!2022年4月25
  • 最后夸下我 动手能力upup 第一次和面就这么光滑 我真的不会和面哈哈哈哈哈(知道你会看[馋嘴]❤️自律并不会让你成功和自由,这种口号只是一些健身房和健身软
  • 不会是pdb投票来的吧2、为了调整型号气质硬拉tri8贴着6,又要看唐书又要摧毁唐书底层一个中心逻辑。就算反6反叛也是为了体系内的平等,6本身依赖权威体系是事实
  • #任嘉伦[超话]# ⑩源于心动,始于喜欢,从喜欢那一刻,心脏为你而跳动——任嘉伦 [心] ┊ ₊˚. 爱你的君君 ♡ ┊[心]⁰⁴¹¹ RJL ❥ ᶫᵒᵛ
  • #TFBOYS[超话]##tfboys出来玩叭# 我带着团糖来了 年末了都给我狠狠的磕好吧 团糖一年比一年少 且磕且珍惜NO.1 1.2号小凯参加节目 撒老师
  • 而A股实现的是T+1和涨跌停交易制度,如果说对A股的短期投机行为额外征收印花税,那么跟全球金融市场也更加不一样了,跟H股都不一样了。但是因为他们没有恋爱、结婚的
  • 【摘抄ID路茜亚Phoenⅰx】“平芜尽处是春山”:再高的山峰,当你千辛万苦爬上山顶并将它踩在脚下时,它都只是你眼前的一片平芜啦!登顶了,也没什么可炫耀的,因为
  • 你们也是知道我的,我只是一枚内敛害羞的且有点爱装的小女孩,到了现场更是社恐大犯病,完全不敢和别人讲话,领取散粉们准备的无料的时候内向到不敢说自己是云丝的一枚小姐
  • 舒渺孟聿川 楚烟李胤 程煜沈沉欢白音洛周庭柯 小说 [打脸]军婚甜蜜蜜,兵王他不撒手了[黑线]徐子矜陆寒洲 [害羞]青涩游戏[拜拜]孙小
  • 很嫩P11✋指甲不小心切掉了 贼痛太紧张了hhhhhP12配方姐和晓虹她们俩看我手受伤了 碰不了水,就没有让我洗东西,非常的关心我,比完赛很多很多的脏碗脏抹布工
  • #石凯[超话]# 做梦和kk在一起了 呜呜醒了之后好难过 我如果是随便梦到一个帅哥 我还有机会和他在一起 但是我不可能和kk在一起 醒了之后狠狠截断反应在梦里k
  • ”子曰:“於止知其所止,可以人而不如鸟乎?有斐君子,如切如磋,如琢如磨。
  • 8.话少的人,未必傻,嘴甜的人,未必善。19.井越掏,水越清;事越摆,理越明。
  • #设计美学[超话]#✅️城乡规划快题:北方中心区商业&文化混合设计⏺️设计说明:规划项目位于北方地区,基地周边交通便利,且周围都是商务办公区,整体设计“
  • 王明勇老師傳統甜點,健康做開心吃!! 好吃安心又省錢擔心血糖及減重的朋友們也可以安心分享!!◎低卡優格檸檬塔❤️❤️酸酸甜甜的檸檬塔是許多女性喜愛的法式甜點,但
  • 启动仪式后,媒体记者采访团即时启程,前往宜昌、孝感、仙桃等地,深入部分企业和职业技能培训机构,开展集中采访报道,从不同视角深入挖掘基层安全生产工作亮点、特色做法
  • 苦难永远都不会结束 自己要面对的也不止眼前的困境 等再次面对的时候 我应该会比以前更怕吧 因为现在太幸福了~#不被定义的妈妈##妈妈的N种模样# 从小到大我和妈