在前面的学习过程中,我们用到了一些函数,例如len()
,min()
,max()
这些函数都是由Python官方提供的,我们称之为内置函数(BIF)
本节主要介绍自定义函数的定义和调用.
自定义函数的语法非常简单
def 函数名(参数列表):
函数体
return 返回值
类比一下我们之前书写的函数
import math
def area_of_circle(x):
return math.pi*x*x
其中
_
但不能是数字return
时,函数就执行完毕我们再次定义一个函数,用以计算长方形的面积
def rectangle_area(width,height):
area = width * height
return area
r_area = rectangle_area(100,200.0)
print("100*200的长方形面积:{0:.2f}".format(r_area))
上述代码中:
rectangle
加小括号的形式对函数进行调用执行关于函数的执行过程,我们先了解到这里,当我们学习了函数参数和作用域之后,再对函数执行过程进行进一步的总结.
注意:
现阶段,我们在函数调用时,如果传入的参数个数和函数定义时不符合,系统会报错
def rectangle_area(width,height):
area = width * height
return area
r_area = rectangle_area(100)
print("100*200的长方形面积:{0:.2f}".format(r_area))
TypeError: rectangle_area() missing 1 required positional argument: 'height'
函数的调用通常情况下是在函数声明之后,否则可能出现报错
r_area = rectangle_area(100,200.0)
def rectangle_area(width,height):
area = width * height
return area
print("100*200的长方形面积:{0:.2f}".format(r_area))
NameError: name 'rectangle_area' is not defined
如果想要定义一个什么也不做的空函数,可以使用pass
语句
def hi():
pass
pass
什么也不做,那他有什么用呢?
上述例子只是pass使用的一个场景,它可以在你新编写的代码时作为一个函数或者条件句体的占位符,允许你保持在更为抽象的层次上进行思考,pass
会被静默地忽略掉
当然,pass
通常用于"语法上需要一个语句,但程序什么动作也不做"的情状
while True:
pass
这通常用于创建最小的类
class MyEmptyClass:
pass
虽然我们没有详细的学习函数的参数相关内容,但是我们在上文中创建的函数明显是有缺陷的,
既然是长方形的面积计算,那么我们不应该也不能够传入字符串等其他数据类型做乘法运算,对于自定义函数,系统不会自动帮你检测传入的参数是否合格
因此,我们需要在定义函数时就应该在函数内部设置一个"筛选机制"来进行参数的检查.
简单改造一下上面的例子
def rectangle_area(width,height):
if not isinstance(width,(int,float)):
raise TypeError('Bad operand type')
if not isinstance(height,(int,float)):
raise TypeError('Bad operand type')
area = width * height
return area
r_area = rectangle_area(100,"A")
print("100*200的长方形面积:{0:.2f}".format(r_area))
isinstance()
是一个内置函数,可以帮助我们判断数据的数据类型
TypeError Traceback (most recent call last)
in
9 return area
10
---> 11 r_area = rectangle_area(100,"A")
12 print("100*200的长方形面积:{0:.2f}".format(r_area))
in rectangle_area(width, height)
4
5 if not isinstance(height,(int,float)):
----> 6 raise TypeError('Bad operand type')
7
8 area = width * height
TypeError: Bad operand type
pass
关键字