函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)

前记:之前的笔记都比较啰嗦,今天试着用灰色引用部分精简重点,一是突出知识点,二是节省学习和复习的时间~
第十三章——函数 在这一章里, 我们要学习三个主要的方法:
(1)函数(function)
(2)对象(object)
(3)模块(module)
13.1 函数、调用函数

创建和使用函数:使用def关键字
(1)创建和使用函数:使用def关键字
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
要调用函数,只需直接用名字调用。运行结果略。 需要注意的是,def块中的代码不是主程序的一部分,所以运行到这里的时候,程序会跳过,直接运行下面“printMyAddress”部分,然后再跳回前面,重新运行这个函数。
(2)假如我们要循环打印五次地址,只需调用函数五次:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
【函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)】我们也可以使用循环、或者直接print出来这些输出,但是循环调用函数的优点是,它可以简便操作,另外它能实现循环不能实现的整洁格式。
此外,函数还有许多有用的特点:
13.3 向函数传递参数
在函数名的括号中间插入参数
如: functionName ( someArgument) :
参数(argument)是指交给函数的一条信息(并不是争吵哦)。
怎么理解呢?比如说,一家人的地址都是一样的,只是名字不一样,这样我们写地址函数的时候,就可以只改变名字,其他地址都不变。仅改变的这个变量,就叫它“myName”吧:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
传递参数,就是在函数的小括号里放上参数名 下面第一个运行结果,看似与之前的一样,但我们再次调用printMyAddress这个函数的时候,将myName参数换上不同的值,输出的也不一样:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
运行结果 也就是说,我们向函数传递什么值,它就依据什么值给我们反馈。如果问题复杂些,我们将需要多个参数:
13.4 有多个参数的函数
用逗号隔开参数;
假如参数过多,可以使用列表呈现。
假如说我们要送信,除了要知道名字,还得知道门牌号,这时候就需要在printMyAddress里设置两个参数:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
设置多个参数 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
运行结果,调用函数并传递了多个参数 注:假如参数太多(超过5~6个参数),就可以考虑将其放到列表中使用,这样可以使代码更整洁、更易读。
13.5 返回值的参数
使用return 语句来返回值
刚刚我们一直向函数输入值,但其实函数还可以给我们输出结果(result)或结果值(return value),下面给出一个例子:


函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
使用return关键字返回值 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
也可以在另一个表达式,或创建变量,在变量中返回值 13.6 变量作用域
局部变量与全局变量的概念
程序之中,使用变量的部分称为“作用域”,作用域有全局和局部之分:
(1)局部变量:就是函数内部的变量。
为了更好地理解局部变量,下面的例子将会在函数外部打印一个局部变量:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
这里设置了局部变量price,并在第二个print尝试打印 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
第二个print报错,证明price只在函数运行中才有存在 (2)全局变量(global variable):函数主程序部分的变量。
为了便于理解全局变量,在函数主体,我们尝试打印全局变量my_price:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
代码 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
运行结果,在函数内、外都能打印全局变量
好的,道理我懂了,但假如我要在函数内改变全局变量,会发生什么变化?
那么我们就写一个全局变量my_price,在函数内设定为10000,看会发生什么结果:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
运行代码 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
运行结果,函数内变为10000,函数外不变 为什么同为全局变量,一个变为10000,另一个却保持不变?
变量是“一个萝卜一个坑”没错,之所以有两个输出,是因为函数内的全局变量变化的时候,python给它安了一个新的变量,暂时存储了变化后的值,为的是防止函数无意改变了全局变量。
13.7 强制为全局
使用global 语句,将函数内的变量强制变为全局变量
当我们确实需要将全局变量通过函数改变的时候,可以这样使用global实现:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
使用global在函数内声明全局变量 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
运行结果 13.8 关于变量命名的一些建议
强烈建议不要将局部变量和全局变量设为同一个名字,虽然不会报错,但容易引起混乱和错误。
你学到了什么?
(1)什么是函数
(2)什么是参数(argument实参,parameter形参)
(3)如何向函数传递一个/多个参数
(4)如何让函数返回值
(5)变量的作用域是什么;什么是局部变量和全局变量
(6)如何在函数中使用全局变量
练习题
(1)编写一个函数,用大写字母打印英文名字,并多次调用函数:
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
这里for循环下面不用写print,直接调用,否则会出现一个“none” 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
实现结果 (2)建立一个函数,可以打印全世界任何人名、地址、街道、城市、州或省,还包含它的邮政编码和国家。(提示:需要七个参数,可以列为单独的参数,也可以作为一个列表)
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
函数代码,有些城市没有省份概念,所以省份用了if实现 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
传递参数 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
实现结果 (3)编写一个函数并调用:计算零钱总面值,用户可以输入五分、两分和一分硬币的数量,函数能够输出最终结果。
函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
代码 函数就像小积木——父与子的编程之旅第十三章学习笔记(函数|函数就像小积木——父与子的编程之旅第十三章学习笔记:函数 2018-08-02)
文章图片
实现结果 小结
有了上一章的铺垫,这节课学起来我觉得是得心应手的。这章学到的东西也许比较简单,但不代表它不重要,我觉得是一个比较适合初学者入门的函数课程。继续加油~

    推荐阅读