《树莓派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

这里唯一需要注意的就是可以省略的参数必须放在其他参数之后。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值