Python函数
定义: 函数是模块化程序设计的解决方案,当一段代码需要反复执行的时间,重复编写不是一个很好的办法,会使得程序冗余,并且增加程序员的劳动量,因此可以将需要反复执行的代码块放在函数中封装 并执行。
函数应用举例说明
已知圆的面积计算公式为 S = π * r ² , 当我们知道 半径 的时间便可以唯一确定一个圆的面积
r = 1
S = π * r ** 2
print(S)
当同时计算多个圆的面积的时间呢?
r1 = 1
S1 = π * r1 ** 2
r2 = 2
S2 = π * r2 ** 2
r3 = 3
S3 = π * r3 ** 2
print(S1)
print(S2)
print(S3)
结论: 这显然并不是一个很好的选择,除了需要每一次计算的时间重新写入求值的代码之外,当参数变化的时间也需要重新修改,所以该程序的设计可以向着更加简洁和方便的方向而发展。由此可以引入函数,将其简化
简化后的代码
def get_area(r):
S = 3.14 * r ** 2
return S
引入函数之后可以将求值的代码全部写在一个代码块中,然后接收一个可变的参数(变量)直接调用并返回一个结果。
注意: 基本上所有的高级语言都支持函数,Python也不例外。Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。
函数的基本结构
通过上述例子可知函数需要接收一个参数并执行特定的代码。所以函数的基本要素有:
- 形式参数
- 实际参数
- 返回结果
- 函数名称
Python的函数定义为以下形式。
def 函数名称(参数):
代码块
函数的调用
Python内置了很多解决问题最常用的函数,可以直接调用。要调用一个函数,需要知道函数的名称和参数。以取最大值的函数max()为例。
max(1,2,4,6,-1,0.2)
注意: 调用的时间重点关注参数的数量和数据类型。如果传入的参数数量不对,或者是参数数量是对的,但参数类型不能被函数所接受,都会报TypeError错误
abs(1,2) # 传入的参数数量错误
abs('a') # 传入的参数数据类型错误,问题解决,可以将数据类型通过数据类型转换的方法首先转换下数据类型。
提示: 可以访问Python官网查看文档,找到内置的方法详细的使用方式。官网地址如下。
https://docs.python.org/3/library/functions.html#abs
函数的定义(设计)
Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。参考函数的基本结构。
定义几种特殊的函数
- 定义没有返回值的函数
- 定义没有函数体的函数
- 定义有多个返回值的函数
定义没有返回值的函数
函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。
def function():
return
定义一个空函数
如果想定义一个什么事也不做的空函数,可以用pass语句:
def function(参数):
pass
既然pass语句什么都不做,那为什么还要用?其实pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
获取多个返回值的函数
直接在return后面添加多个值并且使用逗号,隔开就行了。
# 根据长方体的长和宽直接求周长和面积
def get_status(length,width):
zhouchang = (length + width) * 2
area = length * width
return zhouchang,area
注意: 虽然形式上是多个值,事实上return仍然只返回一个对象,返回的其实是一个tuple。
总结:由此得到结论,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。写计算机程序也是一样,函数 就是最基本的一种代码抽象的方式。