def foo(numbers=[]):
numbers.append(9)
print(numbers, id(numbers))
foo() #[9]
foo() #[9,9]
foo([8,9]) #[8,9,9]
foo() #[9,9,9]
foo() #[9,9,9,9]
#出现上述问题的原因是python默认参数的或者值等于默认参数的时候指向的内存地址是同一个地址,相当于改变的是同一个变量,
#下面这个才是我认为的执行
def foo(numbers=[]):
if not numbers:
numbers = [];
numbers.append(9)
print(numbers, id(numbers))
foo() #[9]
foo() #[9]
foo([8,9]) #[8,9,9]
cankao:https://www.cnblogs.com/gpd-Amos/p/8998059.html
大坑:Python 使用 list 作为函数参数时,参数为可变变量时,默认参数变量的内存地址是相同的,
最新推荐文章于 2024-08-09 12:38:27 发布