Python的从0到1(第二十二天)-Python函数及使用

这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

函数是什么

在 Python 中,函数是组织好的,可以重复使用,用来实现某一功能的代码。

与数学中的函数不同,在Python中,函数不是看上去冰冷无聊的规则和公式,而是有实打实的、有自己作用的代码。而且,它已经是你的老朋友了。

之所以说函数是我们的老朋友,是我们在先前的课堂中就已经接触到一些Python自带(学名叫“内置”)的函数了。

比如说当我们需要实现“打印”这个功能,我们会用到print();当我们需要实现“获取数据长度”这个功能,我们会要到len()。这些都是设定好了,可以直接拿过来就用的功能,这就叫做“组织好的代码”。

函数(Function)能实现的功能从简单到复杂,各式各样,但其本质是相通的:“喂”给函数一些数据,它就能内部消化,给你“吐”出你想要的东西。

这就像自动贩卖机,只不过贩卖机是喂点钱,吐出来一些吃的喝的用的东西;而Python函数则是喂各种各样的数据,吐出来各种各样的功能。

眼尖的话,你会发现图片里的函数后面都跟了个括号。而括号里放的东西,也就是我们需要输入的数据,它在函数中被称作【参数】。【参数】指向的是函数要接收、处理怎样的数据。

比如print()函数的括号里可以放不同的参数,根据你放的参数不同,print()函数会帮你在屏幕上显示不同的内容。

print('Hello World')

print('我爱学Python')

print(42)
复制代码

括号里面的字符串和整数,都是print() 函数的参数。

说了这么多函数的特征,现在我们一起看看函数的定义:

还是用贩卖机来打比方,贩卖机是设定好可以直接使用(组织好的),可以重复上架售卖不同的物品(重复使用),功能是卖东西(单一功能)。

而函数呢?以print()函数为例,它也是设定好可以直接使用(组织好的),不论你想打印什么参数都可以(重复使用),而print函数能实现的单一功能就是“打印”。

那除了 input()、print()…这些内置函数,我们总会需要内置函数满足不了的功能,这时又该怎么办呢?

定义和调用函数

想要认识函数,第一步,我们需要去定义一个函数。

定义函数

定义函数,就是自定义一个属于自己的函数,它的语法格式如下:

def 函数名(参数):

    代码块
复制代码

咱们一个个来看,首先看到def

定义函数时,我们要用到def语句,def 在英文中是 define 的缩写,意为“定义”,为定义函数的固定格式。

然后看到函数名

和变量名一样,这里的函数名也是自己命名的,比如你在控制一辆中国最先进的坦克车-99G式,如何让它前进后退呢?

# 实现前进功能

def forward():

    print('前进!')

# 实现后退功能

def backward():

    print('后退!')

# 实现开火功能

def fire():

    print('开火!')
复制代码

负责前进功能的零部件(函数)叫:forward()。而除了 forward() 以外的其它零部件(函数)也有其需要实现的功能:

backward() 负责刹车,fire() 负责开火。

而这里每个零件(函数)都有它们唯一固定的名称(函数名),它们也都可以处理一定的数据(参数)等。

这里的参数是函数要接收并对其进行处理的数据。

定义函数时,你可以像上面的代码一样不设置参数,但也可以设置很多个参数,关于它等会我们会细讲。

最后是代码块

代码块就是函数内的代码内容,用于实现函数功能。当你使用函数时,就会执行代码块内的内容。

先讲不设置参数时的情况,这里拆解一个咱们坦克车操作中的零部件函数:forward() 来看。

在这段代码中:

函数名为:forward

代码块内容为:print('前进!')

阅读完直接运行下列代码即可:

#函数名:最好是取体现函数功能的名字,一般用小写字母和单下划线、数字等组合

def forward():

#参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同

#规范:括号是英文括号,后面的冒号不能丢

    print('前进!')

#函数体:函数体就是体现函数功能的语句,要缩进,一般是四个空格
复制代码

运行代码后为何没反应呢?按理来说应该已经成功定义这个函数了呀。

这是因为你还没有调用函数,调用函数就是我们常说的使用函数的功能,函数需要调用才能发挥作用。

调用函数

就像有了仪器,有了汽车,也需要先启动使用才能发挥它的功能。

回到 Python 中来,没设置参数时,调用函数的语法是:函数名()。调用函数以后,函数内的代码块就会自动执行。再试着运行下面这段代码,注意看最后一行代码:

def forward():

    print('前进!')

# 调用函数

forward()
复制代码

看到代码块的内容被运行成功了吗?如果没问题的话,你就成功调用了这个你定义的函数。

函数的执行流程

那么你可能会有疑问,刚刚的那个函数是怎么执行的?一个函数的执行顺序又应该是怎样的呢?一起来看:

在Python执行定义函数的语句时,首先会创建函数,而不是执行该函数内部的内容。

每当调用对应的函数的时候,该函数内的代码块才会运行一遍,咱们来看看代码,运行一下:

def forward():

    print('前进!')

print('我会先被打印')

# 调用函数

forward()
复制代码

看到终端显示的结果,调用函数以后才会执行函数内部的代码块。

调用函数的代码在第 5 行,所以第 3 行代码先被打印了出来,然后才轮到函数内代码块的内容被打印出来。

函数的创建和调用过程,如下

第一步:首先会创建函数。 在创建完函数以后,不会执行函数内代码块的内容。

第二步:会先执行其它代码,直到这个函数被调用

然后第三步,到调用函数时,这个函数内的代码块才会运行

总结一下,这段代码的运行过程分步来看是这样的:

1)先创建 print() 函数。

2)执行代码直到调用函数;

3)调用函数以后执行函数内部的代码块。