从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章给大家分享的是有关Python如何解决定义函数时参数有默认值的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的东胜网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!在定义函数的时候,如果函数的参数有默认值,有两种类型的参数,一种是整数,字符串这种不可变类型,另一种是列表这种可变类型,对于第一种情况没有什么特殊的地方,但是对于可变类型,有一个微妙的小陷阱。
可变类型以及小陷阱:
def append_item(item, list1=[]): list1.append(item) return list1 print(append_item((1))) # [1] print(append_item((2))) # [1, 2] print(append_item((6))) # [1, 2, 6] list2 = [6, 7] print(append_item(1, list2)) # [6, 7, 1] print(append_item(9, list2)) # [6, 7, 1,9]
问题:为什么会输出[1,2],[1,2,6],很明显使用默认参数的情况下,每调用一次append_item,都在之前得list1基础上添加元素。但是不使用默认值,就没有这种情况了,这是为什么呢?
原因:在创建上面的函数时,list1参数被设置为引用一个新的列表,之后,在仅使用第一个参数调用该函数(即第二个使用默认参数)时,默认的列表都将是函数本身创建时指定的那个列表,因此将不会再有新的列表得以创建。
我们所期待的是,在每次仅使用第一个参数调用该函数时,都会创建一个新的空列表,下面进行改动:
def append_item(item, list1=[]): if not list1: list1 = [] list1.append(item) return list1 print(append_item((1))) # [1] print(append_item((2))) # [2] print(append_item((6))) # [6] list2 = [6, 7] print(append_item(1, list2)) # [6, 7, 1] print(append_item(9, list2)) # [6, 7, 1,9]
感谢各位的阅读!关于“Python如何解决定义函数时参数有默认值的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图