当前位置:编程学习 > python >>

python的默认参数

刚在群里一个人问的问题,前两天正好看过,记录一下。
__author__ = 'chenyu'
 
def f(i,L=[]):
    L.append(i)
    return L
 
def f2(i,L=None):
    if L  is None:
       L = []
    L.append(i)
    return L
 
print f(1)
print f(2)
print f(3)
 
 
print f2(1)
print f2(2)
print f2(3)
输出:
[1]
[1, 2]
[1, 2, 3]
[1]
[2]
[3]
按照预想的结果f()输出的应该是[1],[2],[3],但是每次上次的结果都被保留下来了。
造成这样的原因是python支持函数中的参数默认值是一个可变的list, 函数体内修改了原来的默认值,而python会将修改后的值一直保留,并作为下次函数调用时的参数默认值。
补充:Web开发 , Python ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,