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

前记:之前的笔记都比较啰嗦,今天试着用灰色引用部分精简重点,一是突出知识点,二是节省学习和复习的时间~

第十三章——函数

在这一章里, 我们要学习三个主要的方法:

(1)函数(function)

(2)对象(object)

(3)模块(module)

13.1 函数、调用函数

创建和使用函数:使用def关键字

(1)创建和使用函数:使用def关键字

要调用函数,只需直接用名字调用。运行结果略。

需要注意的是,def块中的代码不是主程序的一部分,所以运行到这里的时候,程序会跳过,直接运行下面“printMyAddress”部分,然后再跳回前面,重新运行这个函数。

(2)假如我们要循环打印五次地址,只需调用函数五次:

我们也可以使用循环、或者直接print出来这些输出,但是循环调用函数的优点是,它可以简便操作,另外它能实现循环不能实现的整洁格式。

此外,函数还有许多有用的特点:

13.3 向函数传递参数

在函数名的括号中间插入参数

如: functionName ( someArgument) : 

参数(argument)是指交给函数的一条信息(并不是争吵哦)。

怎么理解呢?比如说,一家人的地址都是一样的,只是名字不一样,这样我们写地址函数的时候,就可以只改变名字,其他地址都不变。仅改变的这个变量,就叫它“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)编写一个函数并调用:计算零钱总面值,用户可以输入五分、两分和一分硬币的数量,函数能够输出最终结果。

代码
实现结果

小结

有了上一章的铺垫,这节课学起来我觉得是得心应手的。这章学到的东西也许比较简单,但不代表它不重要,我觉得是一个比较适合初学者入门的函数课程。继续加油~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容