参考链接: Python中的id函数

当定义函数时,会保存函数中默认参数 list 的值,也就是列表 l=[];

在每次调用的时候如果传递了新的列表,则使用传递的列表,没有传递,使用定义函数时保存的默认参数(l=[]);

在调用中没有传递新的列表(使用默认列表 l=[] )的时候,程序会调用定义函数时保存的默认参数((l=[]));

列表在append的时候会在 l=[] 原来的基础上append追加值,所以会产生以下结果.

# *===================================*

# -*- coding: utf-8 -*-

# * Time : 2019-07-03 10:50

# * Author : zhangsf

# *===================================*

def f(x,l=[]):

print(id(l))

for i in range (x):

l.append(i*i)

print(l)

print('---1---')

f(2)

print('---2---')

f(3,[3,2,1])

print('---3---')

f(4,[])

print('---4---')

f(2)

---1---

4384243592

[0, 1]

---2---

4384954248

[3, 2, 1, 0, 1, 4]

---3---

4384954248

[0, 1, 4, 9]

---4---

4384243592

[0, 1, 0, 1]

Process finished with exit code 0

上面通过打印可以发现

会发现l[]的ID值在1、4中是相同的,2、3中是相同的;

说明两次执行时使用的都是定义函数时的默认参数 l=[ ]

当3中传递空列表时,函数体当中会使用传递的空列表,4中没有传递时,使用函数默认值 l=[ ], 所以会产生以上结果。

如果想无论都不影响的时候只需要在传入l[]的时候判断即可

if not l:

# 如果l不为空的话,就往下走(清空列表); 为空就不走

l = []

[转载] Python函数中把列表(list)当参数相关推荐

  1. python函数中把列表(list)当参数时的入坑与出坑

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑. 入坑 挖坑 def f(x,li=[]):for i in range(x):li.append(i*i ...

  2. 站长在线Python精讲:在Python函数中理解形式参数和实际参数

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中理解形式参数和实际参数>.本文的主要内容有:Python中形式参数的概念和特点,Python中实际参数的 ...

  3. python函数参数为列表_python函数中把列表(list)当参数时的入坑与出坑

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑. 入坑 挖坑 def f(x,li=[]): for i in range(x): li.append(i ...

  4. Python之在函数中使用列表作为默认参数

      本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数.   我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使 ...

  5. python默认参数举例_Python之在函数中使用列表作为默认参数

    本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数. 我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使用列表作 ...

  6. 站长在线Python精讲:在Python函数中参数传递的位置参数详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python函数中参数传递的位置参数详解>.本文的主要内容有:实参和形参数量必须与定义时一致和实参和形参位置必须与定义时一 ...

  7. [转载] 详细介绍Python函数中的默认参数

    参考链接: Python函数中的默认参数 详细介绍Python函数中的默认参数 import datetime as dt def log_time(message, time=None): if t ...

  8. python 类中定义列表_Python-从类定义中的列表理解访问类变量

    小编典典 类范围和列表,集合或字典的理解以及生成器表达式不混合. 为什么:或者,官方用词 在Python 3中,为列表理解赋予了它们自己的适当范围(本地名称空间),以防止其局部变量渗入周围的范围内(即 ...

  9. python return函数_理解Python函数中的return关键字

    一.说明 return 语句是Python函数返回的结果,可以是数值.字符串.列表.表达式.函数等: return 语句将Python函数的结果,返回到调用的地方,并把程序的控制权一起返回,即在函数中 ...

最新文章

  1. ajax同步,异步简单的介绍
  2. linux安装google chrome
  3. 交换技术、覆盖技术、虚拟存储技术的区分
  4. 建议 Solr 用户更新 Apache POI
  5. J2EE的经常使用十三规范——java菜鸟成长记
  6. CF594D. REQ
  7. 森林病虫防治系统 (十)
  8. springcloud mysql库集群_SpringCloud实现分库分表模式下,数据库实时扩容方案
  9. 使用java实现冒泡排序和选择排序
  10. 提升 JavaScript 技能的5个小技巧,新手小白值得学习!
  11. 玩转windows内置linux子系统_1.安装
  12. 六龙争霸3D国战怎么玩 国战玩法详解
  13. 基于蒙特卡洛方法的机器人工作空间MATLAB仿真
  14. 粒子滤波的通俗解释,傻子的搜寻策略--我的理解_拔剑-浆糊的传说_新浪博客
  15. JAP的类关系 @OneToMany 和 @ManyToManys
  16. ue4白天夜晚切换_白天/夜晚编码的美好时光...多年来最佳
  17. 计算机病毒金山毒霸,金山毒霸网络版成为计算机病毒的客星
  18. 华为 HCIA-AI V3.0 认证人工智能工程师考试
  19. vbs计算机代码,vbs运行一个程序的代码
  20. Windows 11 “隐藏版”曝光,网友:微软为何要让学生受这种苦?

热门文章

  1. nginx服务器怎么配置文件,nginx服务器搭建和配置(nginx怎么搭配配置服务器)
  2. Windows下给WSL子系统(Kali)换源,使用binwalk,outguess等工具
  3. 【服务器】Cloudreve绑定七牛云免费对象存储
  4. NYOJ64 - 鸡兔同笼
  5. 本地mongo 连接远程数据库_本地搭建esaymock
  6. mongodb和mysql空间占用_MongoDB的存储结构及对空间使用率的影响
  7. solving order
  8. python里split以制表符分隔_在python中拆分以制表符分隔的大文件
  9. 计算机网络—SR选择重传协议
  10. 前缀(波兰表达式) 中缀 后缀(逆波兰表达式)