def f(x,li=[1]):
print(id(li))
li.append(x)
print(li)
f('a')#第一次调用函数
print()
f('b')#第二次调用函数
print()
f('a',[])#第三次调用函数
print()
f('b',[2,2])#第四次调用函数
print()
f('a')#第五次调用函数
'''输出
1435220040000
[1, 'a'] 1435220040000
[1, 'a', 'b'] 1435222867392
['a'] 1435222867392
[2, 2, 'b'] 1435220040000
[1, 'a', 'b', 'a']
'''

在调用函数时,若未传递列表参数,则会使用列表形参的默认值。

该默认值的地址是不变的,并且调用函数中对该地址的列表所做的改动会保留下来。

在调用函数结束时或下一次调用函数开始时,均不会将该地址所在的列表形参重置为定义函数时设定的默认值

  • 第一次调用函数后,列表形参li默认值从[1]变为了[1,'a']
  • 第二次调用函数仍未传递列表参数,列表形参li默认值从[1,'a']在函中被变为了[1,'a','b']
  • 第三次调用函数传递了一个空列表,函数没有使用默认的列表形参,因此列表形参li默认值没有变化,仍为[1,'a','b']
  • 第四次电影函数传递了一个列表[2,2]与上面情况一样
  • 第五次调用函数未传递列表,函数使用了默认的列表形参li,为[1,'a','b'],函数操作后默认的形参列表变为了[1,'a','b','a']

(Python)每日代码||2024.1.17||函数中给列表形参默认值时,该默认列表在函数中的改变会保留下来的更多相关文章

  1. day_12函数默认值,数据类型的补充,函数对象名称空间与作用域,函数的嵌套定义

    复习, 昨天讲了字符串的比较,按照从左往右比较每一个字符,通过字符对应的ASCII码进行比较 函数的参数,‘ 实参与形参 形参:在函数定义时()中出现的参数 实参,在函数调用时()中出现的参数 实参的 ...

  2. SQL将一个表中的某一列值全部插入到另一个表中

    1.  SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=selec ...

  3. es6(三):es6中函数的扩展(参数默认值、rest参数、箭头函数)

    1.函数可以设置参数默认值 function test1(x,y=1){ console.log(x,y) } test1(10)//10 1 2.rest参数:形式为...变量名 function ...

  4. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式

    以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列像素的三个通道数据组成一个一维数组,一行像素组成一个二维数组,整幅图像组成一个三维数组,即: Mat.dat ...

  5. mysql where 条件中的字段有NULL值时的sql语句写法

    比如你有一个sql语句联表出来之后是这样的 id           name            phone                  status 1            张三     ...

  6. list中包含多个相同值时,List中的indexOf(Object o)方法的返回值

    查一下Java API,List下的indexOf(Object o)方法的返回值为list列表中首个元素出现位置的索引,找不到时返回-1

  7. img标签中的图片加载异常时显示默认的图片

    备忘:

  8. SQLite取值时的下标与创建表中字段的关系

  9. Ruby方法参数默认值的一个小技巧在Rails中的应用

    我们需要生成一个gravatar格式的html.image标示,于是写了如下方法: def gravatar_for(user) gravatar_id = Digest::MD5::hexdiges ...

  10. model中设置默认值时 ,使用 lambda 与否的差别以及datetime的默认值方法

    'date': '2013-01-01'  #固定值 'date': time.strftime('%Y-%m-%d')  #启动时候的值 'date': lambda *a: time.strfti ...

随机推荐

  1. vivo 悟空活动中台 - 栅格布局方案

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/6O0CH0U_WE1YkPK75m-jDQ作者:悟空中台研发团队 一.背景 今天来给大家分享 ...

  2. WebGPU光追引擎基础课:使用WebGPU绘制三角形

    大家好~我开设了"WebGPU光追引擎基础课"的线上课程,从0开始,在课上带领大家现场写代码,使用WebGPU开发基础的光线追踪引擎 课程重点在于基于GPU并行计算,实现BVH构建 ...

  3. Flume原理及使用案例

    本文为转载篇!原文: https://www.cnblogs.com/zhangyinhua/p/7803486.html https://www.cnblogs.com/ciade/p/549521 ...

  4. IDE暗黑主题推荐-Dracula

    作为程序员,我们一天中会花费大量时间在编码和阅读代码上.优秀的代码编辑器主题可以减轻眼睛的疲劳,提高工作效率.本文向大家推荐一款非常流行的 JetBrains IDE 主题插件 - Dracula.它 ...

  5. C# ,使用“^”运算符对数字加密

    原理:"异或"运算符"^", 用于比较两个二进制数的响应位.计算过程如果两个二进制数的相应位都为1或两个二进制数的相应位都为0,则返回0:如果两个二进制数的相应 ...

  6. HUD 5773 LIS(最长上升序列)

    ***关于lower_bound()的用法参见:http://blog.csdn.net/niushuai666/article/details/6734403 lower_bound用法:函数low ...

  7. 解决navicat连接mysql数据库查询很慢的问题

    1.背景: navicat连接数据库进行sql查询,每隔一段时间发现查询会变得很慢 2.原因: Mysql服务器端会定时清理长时间不活跃空闲的数据库连接,进行优化 3.解决方案: Navicat -右 ...

  8. Android之AMS原理分析

    在学习android框架原理过程中,ams的原理非常重要,无论是在面试中还是在自己开发类库过程中都会接触到. 1 简述 ActivityManagerService是Android最核心的服务,负责管 ...

  9. mysql之力扣数据库题目620有趣的电影优化记录

    闲着没事儿刷刷力扣的数据库题目,题目编号620:有趣的电影,下面是题目描述: 优化前的sql及执行时间: 优化后的sql及执行时间: 这里对筛选条件进行了优化: 1.select * 的查找效率要比逐 ...

  10. 如何让Dec-C++支持C++11

    1.问题 Dev-C++默认设置中是不支持C++11版本特性的,如Lambda表达式,nullptr等均不提供支持 2.解决 设置编译选项 编译时加上命令-std==c++11即可