python3默认参数陷阱
默认参数的值是容器类型,每次调用函数的时候,如果不传值,会用公用资源池
def func(k, v=[]):
v.append(k)
print(v) func('wt')
func('ab', [])
func('cd') # 占用wt的内存
def extend_list(v, li = []):
li.append(v)
return li list1 = extend_list(10) list2 = extend_list(20, [])
print(list2)
list3 = extend_list(30) # 占用的是list1的内存
print(list3)
print(list1)
python3默认参数陷阱的更多相关文章
- 【转】Python函数默认参数陷阱
[转]Python函数默认参数陷阱 阅读目录 可变对象与不可变对象 函数默认参数陷阱 默认参数原理 避免 修饰器方法 扩展 参考 请看如下一段程序: def extend_list(v, li=[]) ...
- Python面试题目之Python函数默认参数陷阱
请看如下一段程序: def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) list2 = extend_l ...
- python中函数的默认参数陷阱问题
其实也不能说是陷阱,只是一个不容易注意到的地方,尤其是有其他java/c++类编程语言经验的人员,这里涉及到python的一个特点,所以笔者说是陷阱只是一个噱头而已. def test(item, b ...
- python默认参数陷阱
对于学习python的人都有这样的困惑 def foo(a=[]): a.append(5) return a Python新手希望这个函数总是返回一个只包含一个元素的列表:[5].结果却非常不同,而 ...
- python函数默认参数陷阱
对于学习python的人都有这样的困惑 def foo(a=[]): a.append(5) return a Python新手希望这个函数总是返回一个只包含一个元素的列表:[5].结果却非常不同,而 ...
- python3 - 默认参数为列表
默认参数的坑 定义一个函数,传入一个list,添加一个end再返回 1 2 3 def add_end(L=[]): L.append('END') return L 正常调用时,结 ...
- Python中list作为默认参数的陷阱
在Python中,作为默认参数的一定要是不可变对象,如果是可变对象,就会出现问题,稍不注意,就会调入陷阱,尤其是初学者,比如我(┬_┬). 我们来看一个例子. def add(L=[]): L.app ...
- Python默认参数的陷阱
一:内置函数 globals() locals() 1.返回的是字典,字典里面的键值对:全局作用域的全部内容 print(globals()) 2.返回的是字典,字典里面的键值对:当前作用域的全部内容 ...
- python3 函数的形参、实参、位置参数、默认参数、关键字参数以及函数的递归
python 版本 3.5 #Author by Andy#_*_ coding:utf-8 _*_def func(x,y=2): print('我是形参%s'%x) print('我是默认参y-- ...
随机推荐
- Character.digit()的意义
最近在阅读Integet.parseInt()源码时,遇到了Character.digit()这个方法,以前没有遇到过,更没使用过,这里查了资料就记录一下. 官方说法是: java.lang.Char ...
- P1031 栈的序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...
- dotnet core 发布只有一个 exe 的方法
在 dotnet core 发布的时候,会使用很多文件,这样发给小伙伴使用的时候不是很清真,本文告诉大家一个非官方的方法通过 warp 将多个文件打包为一个文件 和之前相同的方式发布一个 dotnet ...
- D Thanking-Bear magic
题目描述 In order to become a magical girl, Thinking-Bear are learning magic circle. He first drew a reg ...
- C# 文件在数据库 的 存取
... /// <summary> /// 获取数据库Image字段数据,保存到本地 /// </summary> /// <param name="sende ...
- python列表(list)
#str #类,字符串 #name = "raitorei" #创建一个对象 #list #类,列表 ##############list类中提供的方法(灰魔法)######### ...
- Django 中配置MySQL数据库
在Django的项目中会默认使用sqlite的数据库 配置MySQL需要在setting.py 里加入以下设置: 配置数据库 DATABASES = { 'default': { 'ENGINE': ...
- Java图形打印 上下对称三角星
记录记录 @Test public void name03() { int row = 9; for (int i=0,k=row,m=0;i< row;i++){ for(int l=m-i; ...
- DEVOPS技术实践_19:Pipeline的多参数json调用
在上一篇学习了把参数写进Json文件,然后通过去Json文件,调用参数的方法 1. 三元运算符介绍 调用的方法是通过一个三元运算符实现的 gender = prop.GENDER? prop.GEND ...
- 如何保存HTTPrequestbase和CloseableHttpResponse
在测试过程中,有一个重要的工作就是保存记录"现场",以方便开发人员更快发现BUG解决问题.在接口测试中更是如此,如果开发人员能够根据BUG的信息直接复现请求,是一件很方便的事情.为 ...