目录
主要内容
- 定义函数
- 使用函数参数
- 用可变对象作为参数
- 理解局部变量和全局变量
- 创建生成器函数
- 创建和使用lambda表达式
- 使用装饰器
(一)基本的函数定义
先简单举个例子,以阶乘计算为例。
以下代码定义了把阶乘的计算放到fact()函数中,这样只需要调用fact函数即可以得到阶乘值了:
文档字符串(docstring)用于描述函数对外表现出来的功能及所需的参数,可以通过fact.__doc__读取其值。文档字符串紧随在函数定义的第一行后面,通常用3重引号包围起来,以便能够跨越多行。
注释(comment)则是记录代码工作原理的内部信息。
>>> def fact(n):
"""Return the factorial of the given number""" #文档字符串(docstring)
r = 1
while n > 0:
r = r * n
n = n - 1
return r
>>>
>>> fact(4)
24
>>> fact(10)
3628800
# 读取文档字符串
>>> fact.__doc__
'Return the factorial of the given number'
return语句之后的值将会返回给函数的调用者。
在某些编程语言中,无返回值的函数被称为“过程”。Python允许编写不含return语句的函数,如果执行了return arg语句,则值arg会被立即返回。return语句执行之后,函数体中的其余语句都不会执行。
因为Python没有真正的过程,所以均被称为“函数”。
(二)多种函数参数
大多数语言的函数都是需要参数的,python提供了三种给出参数的方式,在介绍之前,先了解一下形参和实参的区别。
1)实参与形参
实参(argument):全称为"实际参数"。是在调用时传递给函数的参数.。实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 因此应预先用赋值、输入等办法使实参获得确定值。
形参(parameter):全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。也就是说,形参只存在于函数内。在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。
2)函数形参的定义方式
按位置给出形参
在Python中,最简单的函数传递形参方式就是按位置给出。在函数的第一行中,可以为每个形参指定变量名称。当调用函数时,调用代码中给出的形参将按顺序与函数的形参变量逐一匹配。以下函数计算x的y次幂:
>>> def power(x, y):
r = 1
while y > 0:
r = r * x
y = y - 1
return r
>>> power(3 , 3)
27
上述用法要求,调用代码使用的形参数量与函数定义时的形参数量应该完全匹配,否则会引发TypeError:
>>> power(3)
Traceback (most recent call last):
File "<pyshell#17>", line 1,