农业资讯网
当前位置: 首页 农业百科

用python定义一个args函数(Python中的args和)

时间:2023-05-25 作者: 小编 阅读量: 1 栏目名: 农业百科

用python定义一个args函数全文共2911字,预计学习时长9分钟来源:Pexels在编程中,函数就是生命!这其实就是Python中可变参数的两种形式,并且*args必须放在**kwargs的前面,因为位置参数在关键字参数的前面。*常常与乘法运算有关,但是在Python中,则是splat运算符的两倍。例如,创建一个函数表示学生的考试分数。是的,“args”是一个标准化规范,但仍然只是一个名称。为了更好地演示,我们创建一个函数,输出参加全国英语等级考试的人员名单。

用python定义一个args函数?全文共2911字,预计学习时长9分钟,我来为大家讲解一下关于用python定义一个args函数?跟着小编一起来看一看吧!

用python定义一个args函数

全文共2911字,预计学习时长9分钟

来源:Pexels

在编程中,函数就是生命!

作为使用Python的新手——无论是编程新手,还是熟悉另一语言的人——都需要学习函数定义中的参数数目是否和想要传达的变元数目匹配。

这是基础性知识——有助于了解这个世界。

然而,接触到函数定义中的*args和**kwargs时,也会让新手刚开始就遇到心理障碍。

在Python中的代码中经常会见到这两个词 args 和 kwargs,前面通常还会加上一个或者两个星号。

别被这些语句所绊倒。其实这些并不是什么超级特殊的参数,也并不奇特,只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。

这其实就是 Python 中可变参数的两种形式,并且 *args 必须放在 **kwargs 的前面,因为位置参数在关键字参数的前面。

接下来,我们就具体学学如何使用它们。

位置参数vs关键字参数

为了学习什么是*args和**kwargs,我们需要区分两个概念。

首先,分清楚位置参数和关键字参数的区别。在最基本的函数中,做一个匹配游戏——参数1与参数1匹配,参数2与参数2匹配,诸如此类。

    def printThese(a,b,c):

    print(a, "is stored in a")

    print(b, "is stored in b")

    print(c, "is stored inc")printThese(1,2,3)

    """

    1 is stored in a

    2 is stored in b

    3 is stored in c

    """

三项参数都是必需的,缺了其中一个就会致错。

    def printThese(a,b,c):

    print(a, "is stored in a")

    print(b, "is stored in b")

    print(c, "is stored inc")printThese(1,2)

    """

    TypeError: printThese() missing 1 required positional argument: 'c'

    """

为某函数定义中的参数给定默认值,该参数随后就会变为可选参数。

    def printThese(a,b,c=None):

    print(a, "is stored in a")

    print(b, "is stored in b")

    print(c, "is stored inc")printThese(1,2)

    """

    1 is stored in a

    2 is stored in b

    None is stored in c

    """

另外,这些可选参数也会成为可供选择的关键字,则此时可以规定函数调用参数名称并相应进行映射。

将三个变量默认值设为None,然后看看如何在不考虑顺序的情况下进行映射。

    defprintThese(a=None,b=None,c=None):

    print(a, "is stored in a")

    print(b, "is stored in b")

    print(c, "is stored inc")printThese(c=3, a=1)

    """

    def printThese(a=None,b=None,c=None):

    print(a, "is stored in a")

    print(b, "is stored in b")

    print(c, "is stored inc")printThese(c=3, a=1)

    """

    1 is stored in a

    None is stored in b

    3 is stored in c

    """

Splat运算符

来源:Pexels

从开始说我爱该运算符的名称开始——太……可视化了。*常常与乘法运算有关,但是在Python中,则是splat运算符的两倍。

该运算符就像一个彩盒。笔者把延伸运算符——相当于splat的JavaScript——这个过程可以看做是打开一个多米诺骨牌,形成一个更大的序列,但是splat需要更有力的类比。

利用以下例子更容易解释清楚。

    a = [1,2,3]

    b = [*a,4,5,6]print(b) # [1,2,3,4,5,6]

在代码实例中,将a的内容移入(解包)到新列表b中。

如何使用*args和**kwargs

我们知道splat运算符解包多个值,并且知道函数参数有两种类型。若现在还未弄明白,那么可以将*args理解为变元的缩写,而**kwargs理解为关键字变元的缩写。

各参数用于解压其各自的变元类型,允许使用可变字长变元列表进行函数调用。例如,创建一个函数表示学生的考试分数。

    def printScores(student,*scores):

    print(f"Student Name:{student}")

    for score in scores:

    print(score)printScores("Jonathan",100, 95, 88, 92, 99)

    """

    Student Name: Jonathan

    100

    95

    88

    92

    99

    """

噢,等等,我并未称呼其为*args?是的,“args”是一个标准化规范,但仍然只是一个名称。事实上,在*args中,唯一的星号是真正的参与者,创建了列表,其内容则是来自函数调用的位置参数(在这些定义变元后)。

这些理清楚之后,**kwargs就很容易理解了。名称并不重要,重要的是双星号创建了字典,其内容是关键字参数,来自函数调用(在这些定义变元后)。

为了更好地演示,我们创建一个函数,输出参加全国英语等级考试的人员名单。

    def printPetNames(owner,**pets):

    print(f"Owner Name:{owner}")

    for pet,name in pets.items():

    print(f"{pet}:{name}")printPetNames("Jonathan", dog="Brock",fish=["Larry", "Curly", "Moe"],turtle="Shelldon")"""

    Owner Name: Jonathan

    dog: Brock

    fish: ['Larry', 'Curly', 'Moe']

    turtle: Shelldon

    """

来源:Pexels

最后,再给大家提供一些额外的“知识福利”。

下面一些谏言可有助于大家规避常见的陷阱并扩展知识面。

· 利用*args和**kwargs作为标准化规范,把握好位置参数和关键字参数;

· 不能将**kwargs置于*args前,否则将产生错误;

· 清楚意识到关键字参数和**kwargs之间的冲突,该值本是传达**kwarg的意思,但是却不明就里的成为关键字参数的名称;

· 在函数调用时可以采用splat运算符。

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

    推荐阅读
  • 奥迪被男孩儿划伤家长赔了3500(反转10岁男孩划伤)

    楚天都市报记者:刘闪近日,重庆沙坪坝区石井坡一辆奥迪车被划,车主报警后发现一位10岁男孩有“最大嫌疑”,男孩家长向车主赔偿了3500元。邹兴华:10月7日下午2点多,车主王先生报警反映,他的车被划了。鉴于孩子是未成年,我们将当事双方带回派出所进行调解。最终,由刘先生赔偿车主王先生车辆修理费用3500元。能够不把孩子的情绪当小事,不把孩子的自尊当小事,邹警官不仅是优秀的警察,也是优秀的“大人”。

  • 索的组词(索的组词有哪些)

    下面希望有你要的答案,我们一起来看看吧!索的组词索的组词:离群索居、勒索、搜索、索性、不假思索、按图索骥、搜索枯肠、敲诈勒索、线索、摸索、索取、索要、智尽能索、探赜索隐、兴味索然扥。索是一个汉字,读作suǒ,本意是指绳子,搜寻,讨要,毫无,单独等引申义是。

  • 谷歌seo实例详解(外贸自建站Google排名上不去)

    在做外贸网站时,我们很容易遇到排名不再上升的时期,其实谷歌优化主要也是做好几个内容,做好细节。2,GPB外链服务做谷歌优化外链是必不可少的,尤其是优质的GPB外链,如果自己不专业,最好是请人做好这一块。你像现在非常好的GPB外链,效果是很不错的。

  • r11s深度评测oppo(测评OPPOR11究竟好在哪儿)

    据调查机构消息,2016年OPPO挤进了国产手机的前三名。R9系列产品更是销量突破2000万台,在国内那可谓是傲视群雄,成为了年度最佳。然而机身背面和iPhone7Plus超高相似度在网络上形成了几乎一面倒的差评。但不可否认是,在抄袭iPhone7Plus设计的同时,OPPO还是做出了显著的进步。显示方面,5.5英寸1080p分辨率的AMOLED屏幕正是能够做到轻薄机身的基础。

  • 纸上谈兵主人公(单刀赴会的主人公是谁)

    赵括之所以出名,是因为长平之战前夕,赵王中了秦国的离间计,临时撤换了廉颇,派赵括出战。那时候,东方的魏、齐等国相继衰弱,赵国成为有可能对抗秦国的唯一一股力量。一气之下,赵奢斩杀了平原君家的九个管家,以示惩戒。当时,廉颇和乐乘都认为道路艰险,救援难度大,不应出兵。恃才而骄、不重实际让赵奢对这个儿子的担心日益加重。赵括要用行动证明自己并不是只会纸上谈兵。

  • 女人善良优雅经典句子(这些都合适摘录)

    女人善良优雅经典句子红尘中,你想做与众不同的时尚女人吗?那份独到的韵味,当然需要一款清新淡雅的饰品来点缀属于你的风情。一种是太阳,一种是你努力的模样!清澈明亮的瞳孔,弯弯的柳眉,长长的睫毛微微地颤动着,白皙无瑕的皮肤透出淡淡红粉,薄薄的双唇如玫瑰花瓣娇嫩欲滴。女人,越是处在逆境的时候,越要把背梁骨挺得直直的,脸上始终持着明亮的笑容,身上穿上合体的衣服,在人生的舞台上展示自我顽强的魅力。

  • 灭蚊灯灭蚊到底有没有效果(灭蚊灯管用吗要知道)

    我们看到灭蚊灯的一些宣传上,商家打的都是紫外线来灭蚊这种宣传语,权威部门已经做出结论,紫外线灭蚊其实是一个笑话。你还会相信紫外线灭蚊能有效吗?说了这么多,其实就是想告诉大家,虽然紫外线灭蚊灯没有什么效果,但是市面上其它的一些物理性的灭蚊灯,还是有一定效果的。

  • 战疫必胜全靠自我(并肩战疫守望相助)

    截至2月25日,江西省已累计派出9批11支医疗队,共计1233名队员投入到支援湖北疫情防治工作中。截至2月25日,江西援随医疗队接管12个病区,累计管理患者526例,其中疑似患者46例,确诊患者480例,累计重症患者25例,危重症患者39例;累计出院患者235例,其中疑似患者出院46例。2月14日,一则暖心的消息刷屏网络:江西援随医疗队接生疫情期间首例新生儿。而这也是疫情期间江西医疗队帮助湖北接生的第一个新生儿。

  • 巧克力怎么吃(正确吃巧克力的技巧)

    下面希望有你要的答案,我们一起来看看吧!巧克力怎么吃吃巧克力后可以再来一杯红茶,餐后3小时左右吃上两块巧克力能快速缓解饥饿感,也可以补充能量。但巧克力毕竟是高营养食品,应该把它当作日常饮食中的一部分而不是额外的零食,以免热量超标,感到饥饿又没有时间吃饭时可以吃几小块黑巧克力。

  • 洗衣机哪个品牌最好最实用(洗衣机十大排名)

    空气阻尼吊杆能够减少碰撞降低噪音,改善了波轮洗衣机噪音大的缺陷,过滤网能够将毛绒脏污一网打尽,避免了二次污染,同时延长了洗衣机寿命。桶自洁程序让机器可以自动清洁内外桶壁的污垢,避免了二次污染。