这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战
函数是什么
在 Python 中,函数是组织好的,可以重复使用,用来实现某一功能的代码。
与数学中的函数不同,在Python中,函数不是看上去冰冷无聊的规则和公式,而是有实打实的、有自己作用的代码。而且,它已经是你的老朋友了。
之所以说函数是我们的老朋友,是我们在先前的课堂中就已经接触到一些Python自带(学名叫“内置”)的函数了。
比如说当我们需要实现“打印”这个功能,我们会用到print();当我们需要实现“获取数据长度”这个功能,我们会要到len()。这些都是设定好了,可以直接拿过来就用的功能,这就叫做“组织好的代码”。
函数(Function)能实现的功能从简单到复杂,各式各样,但其本质是相通的:“喂”给函数一些数据,它就能内部消化,给你“吐”出你想要的东西。
这就像自动贩卖机,只不过贩卖机是喂点钱,吐出来一些吃的喝的用的东西;而Python函数则是喂各种各样的数据,吐出来各种各样的功能。
眼尖的话,你会发现图片里的函数后面都跟了个括号。而括号里放的东西,也就是我们需要输入的数据,它在函数中被称作【参数】。【参数】指向的是函数要接收、处理怎样的数据。
比如print()函数的括号里可以放不同的参数,根据你放的参数不同,print()函数会帮你在屏幕上显示不同的内容。
1 | python复制代码print('Hello World') |
括号里面的字符串和整数,都是print() 函数的参数。
说了这么多函数的特征,现在我们一起看看函数的定义:
还是用贩卖机来打比方,贩卖机是设定好可以直接使用(组织好的),可以重复上架售卖不同的物品(重复使用),功能是卖东西(单一功能)。
而函数呢?以print()函数为例,它也是设定好可以直接使用(组织好的),不论你想打印什么参数都可以(重复使用),而print函数能实现的单一功能就是“打印”。
那除了 input()、print()…这些内置函数,我们总会需要内置函数满足不了的功能,这时又该怎么办呢?
定义和调用函数
想要认识函数,第一步,我们需要去定义一个函数。
定义函数
定义函数,就是自定义一个属于自己的函数,它的语法格式如下:
1 | python复制代码def 函数名(参数): |
咱们一个个来看,首先看到def
:
定义函数时,我们要用到def语句
,def 在英文中是 define 的缩写,意为“定义”,为定义函数的固定格式。
然后看到函数名
:
和变量名一样,这里的函数名也是自己命名的,比如你在控制一辆中国最先进的坦克车-99G式,如何让它前进后退呢?
1 | python复制代码# 实现前进功能 |
负责前进功能的零部件(函数)叫:forward()。而除了 forward() 以外的其它零部件(函数)也有其需要实现的功能:
backward() 负责刹车,fire() 负责开火。
而这里每个零件(函数)都有它们唯一固定的名称(函数名),它们也都可以处理一定的数据(参数)等。
这里的参数
是函数要接收并对其进行处理的数据。
定义函数时,你可以像上面的代码一样不设置参数,但也可以设置很多个参数,关于它等会我们会细讲。
最后是代码块
:
代码块就是函数内的代码内容,用于实现函数功能。当你使用函数时,就会执行代码块内的内容。
先讲不设置参数时的情况,这里拆解一个咱们坦克车操作中的零部件函数:forward() 来看。
在这段代码中:
函数名为:forward
代码块内容为:print(‘前进!’)
阅读完直接运行下列代码即可:
1 | python复制代码#函数名:最好是取体现函数功能的名字,一般用小写字母和单下划线、数字等组合 |
运行代码后为何没反应呢?按理来说应该已经成功定义这个函数了呀。
这是因为你还没有调用函数,调用函数就是我们常说的使用函数的功能,函数需要调用才能发挥作用。
调用函数
就像有了仪器,有了汽车,也需要先启动使用才能发挥它的功能。
回到 Python 中来,没设置参数时,调用函数的语法是:函数名()
。调用函数以后,函数内的代码块就会自动执行。再试着运行下面这段代码,注意看最后一行代码:
1 | python复制代码def forward(): |
看到代码块的内容被运行成功了吗?如果没问题的话,你就成功调用了这个你定义的函数。
函数的执行流程
那么你可能会有疑问,刚刚的那个函数是怎么执行的?一个函数的执行顺序又应该是怎样的呢?一起来看:
在Python执行定义函数的语句时,首先会创建函数,而不是执行该函数内部的内容。
每当调用对应的函数的时候,该函数内的代码块才会运行一遍,咱们来看看代码,运行一下:
1 | python复制代码def forward(): |
看到终端显示的结果,调用函数以后才会执行函数内部的代码块。
调用函数的代码在第 5 行,所以第 3 行代码先被打印了出来,然后才轮到函数内代码块的内容被打印出来。
函数的创建和调用过程,如下
第一步:首先会创建函数。 在创建完函数以后,不会执行函数内代码块的内容。
第二步:会先执行其它代码,直到这个函数被调用。
然后第三步,到调用函数时,这个函数内的代码块才会运行。
总结一下,这段代码的运行过程分步来看是这样的:
1)先创建 print() 函数。
2)执行代码直到调用函数;
3)调用函数以后执行函数内部的代码块。
本文转载自: 掘金