zoukankan      html  css  js  c++  java
  • day12 Python 函数形参默认值的坑

    函数形参默认值容易产生的误区

      注意:函数在加载时候,会创建默认值,如果这个默认值是一个可变对象,那么要注意以下坑。

    def func(val, list=[]):  # 函数在加载的时候会创建list的默认列表,其他调用这个函数的时候,如果没有传递新的list,那么会共用同一个list。
        print(id(list))
        list.append(val)
        return list
    
    # 此处list1和list3在调用函数的时候,发现函数体内部的默认list的内存地址相同,所以最后print(list1)的时候,里面有两个值
    list1 = func(10)
    list2 = func(123, []) # 此处传递给函数func了一个实参[],此时发现函数体内部的list的内存地址发生了变化。
    list3 = func('a')
    print('list1=%s' % list1)  # [10,"a"] 
    print('list2=%s' % list2)  # [123]
    print('list3=%s' % list3)  # [10,"a"]
  • 相关阅读:
    关于产品
    Windows服务 + Quartz.NET
    C#
    C#
    URL
    前端生态系统总结
    字符串相似度
    Process Explore & Windbg
    webpack
    JS
  • 原文地址:https://www.cnblogs.com/fanghongbo/p/9892085.html
Copyright © 2011-2022 走看看