Python 函数 可变类型传参 注意点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lnotime/article/details/81747020

代码:3.6.3 

函数缺省形参如果是可变类型,那么函数内部的操作真的会影响省略缺省参数时的使用情况。

def f(l=[]):  # 其实这里写的时候pycharm就会有警告提示:默认参数是可变的
    l.append(1)
    return l


# 改变了默认参数的值
print(f())
# 当使用默认参数时的函数调用会受影响
print(f())
# 传入参数时的函数调用不受影响
print(f([3, 3]))


# 结果:
# [1]
# [1, 1]
# [3, 3, 1]

 应该用下面这种格式来避免(其他可变类型类似)

def f(l=None):
    # 在内部给l赋值
    l = l or []
    l.append(1)
    return l


print(f())
print(f())
print(f([3, 3]))


# 结果:
# [1]
# [1]
# [3, 3, 1]

 

展开阅读全文

没有更多推荐了,返回首页