栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么使用arg = None可以解决Python可变的默认参数问题?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么使用arg = None可以解决Python可变的默认参数问题?

a_list
初始化后的默认值(或其他任何默认值)将在函数内部存储,因此可以通过任何方式进行修改:

>>> def f(x=[]): return x...>>> f.func_defaults([],)>>> f.func_defaults[0] is f()True

分别 对于Python 3:

>>> def f(x=[]): return x...>>> f.__defaults__([],)>>> f.__defaults__[0] is f()True

因此,in中的值

func_defaults
与内部函数众所周知(在我的示例中返回,以便从外部访问它)。

IOW,调用时发生的

f()
是隐式
x = f.func_defaults[0]
。如果该对象随后被修改,则将保留该修改。

相反,函数 内部 的赋值始终为new

[]
。任何修改将一直持续到最后一个引用
[]
消失为止。在下一个函数调用上,将
[]
创建一个新的。

再次使用IOW,

[]
在每次执行时都获取相同的对象并不正确,但是(在默认参数的情况下)只执行一次然后保存。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653039.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号