前言:
当前同学们对“python为空”可能比较关怀,朋友们都想要知道一些“python为空”的相关知识。那么小编同时在网摘上汇集了一些有关“python为空””的相关资讯,希望兄弟们能喜欢,你们快快来学习一下吧!python函数的默认参数请勿定义可变类型
在pycharm中经常会看到这样一句代码警告:
Default argument value is mutable
意思是告诉我们函数的定义中,使用可变类型做默认参数。
那为什么会有这个警告呢?那是因为我们用了可变类型进行默认参数的定义。
可变类型和不可变类型
可变类型(mutable):列表,字典
不可变类型(unmutable):数字,字符串,元组
定义可变类型会有什么问题?
可以发现,默认参数定义可变类型之后,在第二次乃至更多次地调用同一个函数时,默认参数仿佛失去了效果。
此时,在需要重复调用同一个函数的场景中,就非常容易导致问题,并且该问题不易察觉。在debug的时候就会表现成明明没有参数传进来,但是函数参数会有值,并且执行了不应该执行的操作。
导致的原因
我们定义的函数本身是一个function的实例化对象,每当我们进行函数的定义时,就是创建了一个function的实例化对象,而默认参数就是其属性。
在没有传入参数,以默认参数形式调用,并且改变了函数对象的属性值时,改变的属性值作为对象的一部分被保存下来,当第二次调用同一个对象时,属性值已经发生了改变。
type(fun)>>> function解决方法
标签: #python为空