《树莓派Python编程指南》——3.4 使用函数复用代码

简介:

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第3章,第3.4节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 使用函数复用代码

我们已经使用过一些函数,如print()和input()。这些都是Python内置函数。你还可以自己定义函数。第2章中你已经定义过自己的函数,这里我们来复习一下。看下这个:


e0af539cf7c69b92dc4abbf5fec9727856564c05

这段代码定义了一个名叫square(平方)的函数,然后使用这个函数计算了4的平方。使用它的时候需要在名字后面跟一个包含在小括号里的数字——我们称为参数。函数运行时,参数名(本例中是num)将会被赋值为你给定的数字。return语句可以出现在程序中的某个地方,用来给主程序返回数据。如果有多个return语句,Python将在第一次遇到return时返回。
你也可以创建包含多个参数的函数。例如,下面的程序就有一个函数需要两个参数并返回其中较大的一个。

<a href=https://yqfile.alicdn.com/e4e32549f0c7aef6c6961e7214bb86c41ec101bc.png
" >

至此为止,它们都工作地很好。然而如果需要在函数中改变了变量的值呢?看看下面的程序:


<a href=https://yqfile.alicdn.com/cae1a142976a4d5cbfac237cfc3cfd42af0c53f4.png" >


6ffb1ab42f52c5a5fd7decbe78acc2b9aee3b856

运行这段程序之前,先想一下运行结果。可以肯定的是,number_2将会是2,但number_1呢?它应该是1么?因为我们在主程序中给它赋值为1。还是2呢?因为我们把它传递给函数add_one()并在里面改变了它的值。
运行后,你会发现number_1是1。这是因为这一行:

<a href=https://yqfile.alicdn.com/09bd8037b8efb83d25a4c9be5145322752daf1bb.png
" >

你告诉Python不想让num继续保持原来的值(和number_1一样),而是给它一个加1后的新值。
然而,可变数据类型如列表、集合和对象就不一样了。如果它们中的一种数据类型传入函数并改变它,那么作为参数传入的原始值也会跟着变化。比如:

c1d834d208d4c16e7332b5777f35b42f713684cd

运行之后将得到:

<a href=https://yqfile.alicdn.com/80d59a103fd4fa8529b69928cb89b5ab8b6c073b.png
" >

通常情况下,这样做没有什么问题,但有时你并不想让作为参数传入的原始值发生变化。这种情况下,你需要使用copy.deepcopy(),不过首先你得导入copy模块。如果你把上个例子改为:

3acd480e2bd7176486f26e4defd8cf36e1c9098f

你将得到:

c7985d00810be63d4832bc2efb7830577692cbbe

可选参数
有时你需要创建这样一个函数,它有时候需要参数,有时候不需要。比如,你可能需要创建函数increment(),该函数接受两个参数并将它们相加。当只给一个参数时,该函数就把这个参数加上1。这时候你就可以使用默认值(本例中为1)作为参数:

fdbafff2cc6ac88e4ea402d2d6661d48dbeec545

这里唯一需要注意的就是可以省略的参数必须放在其他参数之后。
相关文章
|
3天前
|
数据挖掘 数据处理 索引
python常用pandas函数nlargest / nsmallest及其手动实现
python常用pandas函数nlargest / nsmallest及其手动实现
19 0
|
6天前
|
并行计算 C语言 开发者
优化Python代码的五大技巧
Python作为一种流行的编程语言,在各种应用场景中广泛使用。然而,随着项目规模的增长和需求的变化,Python代码的性能和可维护性也成为了关键问题。本文将介绍优化Python代码的五大技巧,帮助开发者提升代码效率和质量。
|
1天前
|
机器学习/深度学习 人工智能 算法
机械视觉:原理、应用及Python代码示例
机械视觉:原理、应用及Python代码示例
|
1天前
|
存储 缓存 算法
优化Python代码性能的7个技巧
在日常的Python开发中,优化代码性能是一个重要的课题。本文介绍了7个实用的技巧,帮助开发者提高Python代码的执行效率,包括利用生成器表达式、使用适量的缓存、避免不必要的循环等。通过本文的指导,读者可以更好地理解Python代码性能优化的方法,提升自身的编程水平。
|
3天前
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
21 0
|
3天前
|
人工智能 Python
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
8 0
|
3天前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
10 0
|
3天前
|
数据安全/隐私保护 Python
Python中的装饰器:提升代码可读性和灵活性
Python中的装饰器是一种强大的编程工具,能够提升代码的可读性和灵活性。本文将深入探讨装饰器的原理和用法,以及如何利用装饰器来简化代码、实现日志记录、权限控制等功能,从而让你的Python代码更加优雅和高效。
|
8天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
40 1
|
8天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
10 0