内容简介:函数,是编程中很重要的一个概念。简单来说,函数是一段可重复使用的代码段,给这段代码起个名字就是“函数名”。在程序的任何地方都可以通过函数名来使用这段代码,这就是“函数调用”。函数的概念,其实我们在初中数学中就接触过了。比如,这个表达式
函数,是编程中很重要的一个概念。简单来说,函数是一段可重复使用的代码段,给这段代码起个名字就是“函数名”。在程序的任何地方都可以通过函数名来使用这段代码,这就是“函数调用”。
函数的定义
函数的概念,其实我们在初中数学中就接触过了。比如,这个表达式 y = 2x + 3
,我们就称y是x的一次函数。写成 Python 函数就是这样的:
def y(x): return 2 * x + 3
如上例所示,Python中定义一个函数的规则是这样的:
首先是通过关键字 def
来确定它是一个函数,后面跟着 函数名 (比如上面的 y
),函数名后面是小括号括起来的参数,括号外面以冒号 :
结尾这一行。这一行就是函数的声明。
接下来是 函数体 的代码片段,可以是一行也可以是多行,但它们比 def
多了一个缩进。函数体最后一行可以通过关键字 return
返回一个或多个值。如果没有写 return
,Python默认为返回 None
。
有一种特殊的函数定义:空函数,就是什么都不做的函数,它通过一个 pass
语句来定义函数体:
def do_nothing(): pass
空函数主要是在我们写程序最开始,想好都有哪些函数要写,先定义成空函数再慢慢实现它们具体的功能。
同样的,后面我们学习Python面向对象编程时 类(class) 的定义也可以用 pass
来实现一个最小类:
class TheEmptyClass: pass
函数的调用
定义好一个函数后,我们就可以调用(运行)该函数了。调用函数就是通过函数名再传入它需要的参数即可。
a = y(2) print('a is ', a) b = y(6) print('b is ', b)
结合函数 y
的定义,猜猜看a和b的值分别为多少吧。
函数y是一个数学运算的函数,它的参数应该是整数或浮点数。如果我们给它传一个字符串进去,看看会有什么结果呢?
In [153]: y('a') ----------------- TypeError Traceback (most recent call last) <ipython-input-153-1e7b94eb7c3d> in <module> ----> 1 y('a') <ipython-input-150-d8eda758862f> in y(x) 1 def y(x): ----> 2 return 2 * x + 3 3 TypeError: must be str, not int
根据函数体的语句,我们先把字符串 'a'
乘以2得到 'aa'
,再计算 'aa'
字符串和整数 3
的加法就会报错,因为字符串和整数是不能做加法运算的。
我们定义的函数y只有一个参数,如果我们给它传入两个或更多参数,同样也会报错。小猿们可以自己试试看参数个数不对时是什么样的错误。
因此,函数的调用,需要满足函数名、参数类型、参数个数都要符合函数的定义才能运行成功。
函数的返回值
在Python中函数都是有返回值的。如果我们没有通过 return
显示的返回,则Python默认返回 None
。通过 return
我们就可以规定函数返回我们想要的值。我们想要的值可能是一个,也可能是两个或多个, return
都能满足我们的要求。
def my_division(a, b): quotient = a // b remainder = a % b return quotient, remainder
这个函数计算a除以b,返回它们的商和余数两个值。 return
返回多个值时,用逗号 ,
隔开它们即可。
我们看看调用该函数运行的结果:
In [158]: my_division(5, 2) Out[158]: (2, 1) In [159]: my_division(20, 7) Out[159]: (2, 6) In [160]: my_division(20, 5) Out[160]: (4, 0)
可以看到,函数返回多个值时,这多个值组成了一个tuple(元组)。
递归函数
递归函数就是函数自己调用自己。我们以计算一个整数的阶乘来看看递归函数是什么样子的。阶乘的公式如下:
n! = n (n-1) (n-2) … 2 * 1
它的递归函数的定义如下:
def factorial(n): if n == 1: print(n) return 1 print(n, '*', end=' ') return n * factorial(n-1)
递归函数都有一个跳出递归的条件,在本函数中就是 n == 1
。当 n != 1
时就递归调用求比当前n小1的数的阶乘,每次n减1,知道 n == 1
结束递归。这个递归过程其实就是生成了连乘(可以看函数的打印信息):
n (n-1) (n-2) … 2 * 1
In [169]: f = factorial(5) 5 * 4 * 3 * 2 * 1 In [170]: f = factorial(10) 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
总结
定义函数的要素:函数名、参数、函数体
调用函数的注意事项:参数类型、参数个数
函数体最后没有使用return
语句则默认返回
None
函数通过 return
返回一个或多个值,多个值以tuple的形式返回
以上所述就是小编给大家介绍的《python基础教程:函数,函数,函数,重要的事说三遍》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。