山地人

Python 函数

山地人
山地人
2021-07-02

这一篇,我们来讲函数,通过这篇的学习,你会掌握下面这些内容:

  1. 什么是函数
  2. 函数存在的意义
  3. 如何定义一个函数
  4. 函数的参数
  5. 函数的返回值
  6. 函数的种类

什么是函数

我们写的一行行代码就是让计算机去执行的指令。而函数就是一个把这些指令打包在一起。通过这种打包的方式,你可以让每个函数变成一个具有一定功能的小模块。

为何要写函数

如果你只是写一些共工具,可能所有代码加起来也就是十几二十行,那写不写函数其实影响不大。但对于稍大一些的项目,如果不写函数。整个项目中都是代码,这是一件很恐怖的事情。首先项目里可能有很多重复的代码,那这些重复的代码,每次需要用到都要拷贝一份。另外如果这些重复代码要增加新功能,所有地方都要修改。不封装很容易改错或者漏改。最后,代码需要维护升级,没有函数,代码的阅读性会非常差。所以,我们总结一下:

使用函数的好处:

  1. 减少重复性代码
  2. 增加代码的易维护性
  3. 提高代码的可扩展性
  4. 提高代码的可阅读性

如何定义函数

def func_name(parameters):
statement
  • def是定义函数的关键词,写在要定义函数位置的开头
  • func_name是你给函数起的名字,这个名字只要符合变量命名规则即可,另外不要和内置变量名重复
  • parameters后面的圆括号里,是放置函数的参数,这个后面遇到再细说
  • :需要注意Python定义函数时,小括号后面还有一个:冒号
  • statement是定义在函数内部的语句,可以有多条语句,函数体必须要缩进。

下面,我们就来定义一个函数say(),这个函数的功能就是打印一行Hello文本。

def say():
print("Hello")

调用函数

定义好函数后,我们就可以通过函数名+()的方式来调用这个函数。就好比你有一个遥控器要按下上面的按钮才是在使用遥控器一样。定义好的函数就好比是有了一只遥控器,调用这个函数,就好比按下了遥控器上的按钮。

say()

带参数的函数

当然,前面举的say()是最简单的一种函数,不带任何参数和返回值。但很多时候,我们会希望把函数定义得更灵活一些,比如,对于这个打招呼的函数,我们希望可能它能够喊出不同人的名字,所以我们对这个函数的定义做了升级。

def say(name):
print("Hello", name)

我们在say函数的括号中加入了一个name,这就是一个参数。参数就像是函数和外接发生练习的中间人。当我们要告诉函数一些信息时,我们就通过在调用的时候传入参数来告诉函数。函数内部可以通过这个函数来获取到外部传入的内容。

使用的时候,我们可以这样调用带参数的函数:

say("张三")

我们把"张三"作为name参数的值,放在say函数的第一个参数位置,也就是小圆括号里。 函数在运行的时候,就可以通过name这个参数拿到实际的参数"张三"

启动上面的沙盒,点击运行,观察输入内容。

多个参数

当然也可以定义带有多个参数的函数。定义函数时,函数的参数是没有数量限制的,你可以定义不带参数或者带多个参数的函数。这个要根据你的实际需要来做。

但也不要定义太多参数,太多的参数会让调用变得麻烦。

多个参数的函数的定义和使用,都是在函数名称后面的圆括号内,加上多个参数中间。参数之间用逗号分开即可。

返回值

有些时候,我们希望函数在处理完数据后,能把处理的结果返回出来,以便我们后续使用。这就要用到return关键字了。

return 返回值

这一次我们把上面的add函数改成使用返回值形式的。

函数文档注释

Python支持文档注释,你可以在自定义的函数内给这个函数添加文档注释。文档注释必须放在函数体的最开始部分。

def myfun():
"""myfun的功能说明"""
pass

定义好文档注释后,那可以通过函数名.__doc__方式访问到函数的文档注释。 另外你可以通过help()函数查询add函数的帮助文档。

点击运行后,程序会进入帮助文档。英文输入法下,按q可以退出帮助手册。


函数类型

在Python世界,有两种类型的函数:

  1. 内置函数:如我们使用的print函数
  2. 用户定义的函数:上面我们自己定义的add函数