1. 函数的引入
我们知道圆的面积计算公式为:S = πr**2
当我们知道半径r的值时,就可以根据公式计算出面积。假设我们需要计算3个不同大小的圆的面积:
r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3
有了函数,我们就不再每次写s = 3.14 * x * x
,而是写成更有意义的函数调用s = area_of_circle(x)
,而函数area_of_circle本身只需要写一次,就可以多次调用。
基本上所有的高级语言都支持函数,Python也不例外。Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。
2. 意义
将可能需要反复执行的代码封装为函数,并在需要该功能的地方进行调用,不仅可以实现代码复用,更重要的是可以保证代码的一致性,只需要修改该函数代码则所有调用均受到影响。
3. 需注意的问题
- 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:http://docs.python.org/3/library/functions.html#abs
- 也可以在交互式命令行通过help(abs)查看abs函数的帮助信息。
- 调用函数的时候,如果传入的参数数量不对或参数类型不能被函数所接受,会报
TypeError
的错误。
4. 函数定义基本语法
def 函数名([参数列表]):
'''注释'''
函数体 #运算符、内置函数、基本数据类型、选择结构与循环结构都可以作为函数体
-
函数形参不需要声明类型,也不需要指定函数返回值类型
-
即使该函数不需要接收任何参数,也必须保留一对空的圆括号
-
括号后面的冒号必不可少
-
函数体相对于def关键字必须保持一定的空格缩进
-
Python允许嵌套定义函数(和其他变成语言的区别,相对来说使用不多)
问题解决:编写生成斐波那契(Fibonacci)数列的函数并调用。
5. 建议在定义函数开头添加友好注释
在定义函数时,开头部分的注释并不是必需的,但如果为函数的定义加上注释的话,可以为用户提供友好的提示。
如果不添加调用该函数时,显示如下:
因此建议使用开头注释,方便团队或小组协作开发。
6. 关于函数中的return语句 -
在Python中,定义函数时也不需要声明函数的返回值类型,而是使用return语句结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式的类型一致。
-
不论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
-
如果函数没有return语句、有return语句但是没有执行到或者执行了不返回任何值的return语句,解释器都会认为该函数以return None结束,即返回空值。