zoukankan      html  css  js  c++  java
  • 3.默认参数的注意事项

    def func(a,l=[]):
    l.append(a)
    return l
    print(func(1)) # [1,]
    print(func(2)) # [2,]
    print(func(3)) # [3,]
    当你的默认参数如果是可变的数据类型,你要小心了。
    实际输出
    '''
    [1]
    [1, 2]
    [1, 2, 3]
    '''
    默认参数的陷阱:
    def func(name,sex='男'):
    print(name)
    print(sex)
    func('alex')

    陷阱只针对于默认参数是可变的数据类型:
    def func(name,alist=[]):
    alist.append(name)
    return alist

    ret1 = func('alex')
    print(ret1,id(ret1)) # ['alex']
    ret2 = func('太白金星')
    print(ret2,id(ret2)) # ['太白金星']

    如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次这个默认参数,都是同一个。

    def func(a, list=[]):
    list.append(a)
    return list
    print(func(10,)) # [10,]
    print(func(20,[])) # [20,]
    print(func(100,)) # [10,100]
    l1 = []
    l1.append(10)
    print(l1)
    l2 = []
    l2.append(20)
    print(l2)
    l1.append(100)
    print(l1)

    def func(a, list= []):
    list.append(a)
    return list
    ret1 = func(10,) # ret = [10,]
    ret2 = func(20,[]) # [20,]
    ret3 = func(100,) # ret3 = [10,100]
    print(ret1) # [10,] [10,100]
    print(ret2) # 20, [20,]
    print(ret3) # [10,100] [10,100]

  • 相关阅读:
    Postfix之mail.cf
    利用 Postfix 抵擋垃圾信
    安装webmin
    Win7 登入提示临时漫游档案
    squid 延伸
    禁止VMware用户在系统里删除网卡的操作的方法
    Squid Proxy Server 3.1
    使用RBL拦截垃圾邮件
    建置 POSTFIX 服务器
    Seednet 访问路径
  • 原文地址:https://www.cnblogs.com/pythonblogs/p/11056587.html
Copyright © 2011-2022 走看看