在python项目中定义函数是非常普遍的,而定义函数中参数值的选择是多样的,如参数target=[ ]和target=None两种定义方式的运行结果不同, 这是因为python的函数定义调用中参数只解析一次。对于可变类型参数,如target=[ ],调用所定义函数add时,参数target=[ ]解析为一个可变列表,后续调用该函数时,该可变列表target累加使用;对于不可变类型参数,如target=None,调用所定义函数add时,参数target=None解析为空值,与0、空字符串、空列表不同,后续每次调用该函数时target初始为空值不变。
如图,定义一个add函数,参数num和target,其中target=[ ]
运行结果为:
可以发现此时add(1),add(2),add(2)三次运行的结果中,id地址保持不变,列表target为累加状态。
如果此时定义的add函数中target参数设置为target=None,如图:
运行结果为:
此时add(1),add(2),add(2)三次运行的结果中,id地址保持不变,列表target为单个元素。
如有错误,还请指正。