函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
前记:之前的笔记都比较啰嗦,今天试着用灰色引用部分精简重点,一是突出知识点,二是节省学习和复习的时间~
第十三章——函数
在这一章里, 我们要学习三个主要的方法:
(1)函数(function)
(2)对象(object)
(3)模块(module)
13.1 函数、调用函数
创建和使用函数:使用def关键字(1)创建和使用函数:使用def关键字
文章图片
要调用函数,只需直接用名字调用。运行结果略。 需要注意的是,def块中的代码不是主程序的一部分,所以运行到这里的时候,程序会跳过,直接运行下面“printMyAddress”部分,然后再跳回前面,重新运行这个函数。
(2)假如我们要循环打印五次地址,只需调用函数五次:
文章图片
【函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)】我们也可以使用循环、或者直接print出来这些输出,但是循环调用函数的优点是,它可以简便操作,另外它能实现循环不能实现的整洁格式。
此外,函数还有许多有用的特点:
13.3 向函数传递参数
在函数名的括号中间插入参数参数(argument)是指交给函数的一条信息(并不是争吵哦)。
如: functionName ( someArgument) :
怎么理解呢?比如说,一家人的地址都是一样的,只是名字不一样,这样我们写地址函数的时候,就可以只改变名字,其他地址都不变。仅改变的这个变量,就叫它“myName”吧:
文章图片
传递参数,就是在函数的小括号里放上参数名 下面第一个运行结果,看似与之前的一样,但我们再次调用printMyAddress这个函数的时候,将myName参数换上不同的值,输出的也不一样:
文章图片
运行结果 也就是说,我们向函数传递什么值,它就依据什么值给我们反馈。如果问题复杂些,我们将需要多个参数:
13.4 有多个参数的函数
用逗号隔开参数;假如说我们要送信,除了要知道名字,还得知道门牌号,这时候就需要在printMyAddress里设置两个参数:
假如参数过多,可以使用列表呈现。
文章图片
设置多个参数
文章图片
运行结果,调用函数并传递了多个参数 注:假如参数太多(超过5~6个参数),就可以考虑将其放到列表中使用,这样可以使代码更整洁、更易读。
13.5 返回值的参数
使用return 语句来返回值刚刚我们一直向函数输入值,但其实函数还可以给我们输出结果(result)或结果值(return value),下面给出一个例子:
文章图片
使用return关键字返回值
文章图片
也可以在另一个表达式,或创建变量,在变量中返回值 13.6 变量作用域
局部变量与全局变量的概念程序之中,使用变量的部分称为“作用域”,作用域有全局和局部之分:
(1)局部变量:就是函数内部的变量。
为了更好地理解局部变量,下面的例子将会在函数外部打印一个局部变量:
文章图片
这里设置了局部变量price,并在第二个print尝试打印
文章图片
第二个print报错,证明price只在函数运行中才有存在 (2)全局变量(global variable):函数主程序部分的变量。
为了便于理解全局变量,在函数主体,我们尝试打印全局变量my_price:
文章图片
代码
文章图片
运行结果,在函数内、外都能打印全局变量
好的,道理我懂了,但假如我要在函数内改变全局变量,会发生什么变化?那么我们就写一个全局变量my_price,在函数内设定为10000,看会发生什么结果:
文章图片
运行代码
文章图片
运行结果,函数内变为10000,函数外不变 为什么同为全局变量,一个变为10000,另一个却保持不变?
变量是“一个萝卜一个坑”没错,之所以有两个输出,是因为函数内的全局变量变化的时候,python给它安了一个新的变量,暂时存储了变化后的值,为的是防止函数无意改变了全局变量。
13.7 强制为全局
使用global 语句,将函数内的变量强制变为全局变量当我们确实需要将全局变量通过函数改变的时候,可以这样使用global实现:
文章图片
使用global在函数内声明全局变量
文章图片
运行结果 13.8 关于变量命名的一些建议
强烈建议不要将局部变量和全局变量设为同一个名字,虽然不会报错,但容易引起混乱和错误。
你学到了什么?
(1)什么是函数
(2)什么是参数(argument实参,parameter形参)
(3)如何向函数传递一个/多个参数
(4)如何让函数返回值
(5)变量的作用域是什么;什么是局部变量和全局变量
(6)如何在函数中使用全局变量
练习题
(1)编写一个函数,用大写字母打印英文名字,并多次调用函数:
文章图片
这里for循环下面不用写print,直接调用,否则会出现一个“none”
文章图片
实现结果 (2)建立一个函数,可以打印全世界任何人名、地址、街道、城市、州或省,还包含它的邮政编码和国家。(提示:需要七个参数,可以列为单独的参数,也可以作为一个列表)
文章图片
函数代码,有些城市没有省份概念,所以省份用了if实现
文章图片
传递参数
文章图片
实现结果 (3)编写一个函数并调用:计算零钱总面值,用户可以输入五分、两分和一分硬币的数量,函数能够输出最终结果。
文章图片
代码
文章图片
实现结果 小结
有了上一章的铺垫,这节课学起来我觉得是得心应手的。这章学到的东西也许比较简单,但不代表它不重要,我觉得是一个比较适合初学者入门的函数课程。继续加油~
推荐阅读
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 爱就是希望你好好活着
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- 烦恼和幸福
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- 活着就是生命的全部意义
- 其实你就是个普通人
- 是你,情愿
- 有些人真的走着走着就散了
- 有句话忍很久了,女生要求买房怎么就物质了()