- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
E.4 默认函数参数
有时你会想要传递默认变量到你的 Python 函数和方法中。为此,你需要充分理解 Python 何时以何种方式调用这些方法。让我们看一下:
def add_one(default_list=[]): default_list.append(1) return default_list
现在,让我们通过 IPython 研究:
In [2]: add_one() Out [2]: [1] In [3]: add_one() Out [3]: [1, 1]
你可能希望每一个函数调用会返回一个新的列表,只包含一个元素,1。相反,两个调用修改相同的列表对象。而实际上,默认参数在脚本第一次解释的时候被声明。如果每次你都想要一个新的列表,可以像下面一样重写函数。
def add_one(default_list=None): if default_list is None: default_list = [] default_list.append(1) return default_list
现在我们的代码表现得同我们期望的一样:
In [6]: add_one() Out [6]: [1] In [7]: add_one() Out [7]: [1] In [8]: add_one(default_list=[3]) Out [8]: [3, 1]
现在你对内存管理和默认变量有了一些了解,你可以使用你的知识来确定何时检查,以及何时在函数与可执行代码中赋值。深入理解了 Python 何时以何种方式定义对象,我们可以确保这些“陷阱”类型不会给我们的代码添加 bug。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论