问题描述
在Python函数中将默认参数指定为新对象时,多次调用该方法实际上并不会创建新对象。它只是返回相同的对象。有人可以解释为什么代码1和2之间有区别吗?
我一直希望在所有情况下都会创建一个全新的对象。
代码1
class MyObj:
pass
def make_my_obj(arg=MyObj()):
return arg
# o1 and o2 are the same object
o1 = make_my_obj()
o1
<__main__.MyObj object at 0x043EDEC8>
o2 = make_my_obj()
o2
<__main__.MyObj object at 0x043EDEC8>
代码2
def make_my_obj_2(arg=None):
if arg is None:
arg = MyObj()
return arg
# o3 and o4 are different objects
o3 = make_my_obj_2()
o4 = make_my_obj_2()
o3
<__main__.MyObj object at 0x001B2E08>
o4
<__main__.MyObj object at 0x001AB9D0>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)