您的位置: 网站首页> python基础> 当前文章
python函数坑之默认参数为列表(可变对象),每次调用值都变
老董-我爱我家房产SEO2020-09-29163围观,116赞
前言:函数的坑可以查看此文python函数各种坑了解更多。python函数可以有默认参数,但是当你给一个默认参数传值为为可变数据类型时,你会发现一些奇葩的问题。案例如下:
# -*- coding: utf-8 -*- def append_to(num, my_list=[]): my_list.append(num) print(my_list) append_to(1) append_to(2) append_to(3)
[1] [1, 2] [1, 2, 3]
python中函数也是对象,默认参数是函数的属性(函数的参数默认值保存在函数的__defaults__属性中),如果默认值是可变类型变量,它的值会随着函数被调用而改变。
python这个特点一方面和python中可变类型变量的数据结构有关,另一方面可能是为了体现python中一切皆对象的事实!其实这种现象在js里也会遇到!避免这种问题就直接用下面的写法,简单实用。
# -*- coding: utf-8 -*- def append_to(num): my_list = [] my_list.append(num) return my_list a = append_to(5) print('a是',a) b = append_to(6) print('a是',a) # 此时a跟着变了 print('b是',b)
a是 [5] a是 [5] b是 [6]
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
python函数坑之默认参数为列表(可变对象),每次调用值都变文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200