目录
函数是一组语句的集合,用以实现某一特定的功能。函数可以简化脚本,Python 本身提供了许多内置函数,极大地方便了脚本的编写。例如,可以使用 print 函数输出计算结果,使用 input 函数接收用户的输入。除了系统内置的函数之外,程序员还可以根据需要编写自己的函数。
当自定义函数很多时,为了方便这些函数的管理,可将函数分类保存到不同的模块中。因此,模块可以看做是一组函数的集合。许多函数库在Python中都是以模块的形式提供的,例如,系统中的 os 模块提供了对系统操作的一系列函数。
在编写脚本的过程中,经常要完成许多重复的工作。此时就可以将完成重复工作的语句提取出来,将其编写为函数。在脚本中可以方便地调用函数来完成这些重复的工作,而不必重复的复制粘贴代码。
在Python中,函数必须先声明,然后才能在脚本中使用。使用函数时,只要按照函数定义的形式向函数传递必需的参数,就可以调用函数完成所需的功能。
一、函数声明
在Python中,使用 def 可以声明一个函数。完整的函数是由函数名、参数以及函数实现语句组成的。在函数中也要使用缩进来表示语句属于函数体。
如果函数有返回值,那么需要在函数中使用 return 语句返回计算结果。
-
声明函数的一般形式:
def <函数名> (参数列表):
<函数语句>
return <返回值>
# 其中参数和返回值不是必须的。很多函数可能既不需要传递参数,又没有返回值。
-
示例:求一个列表中所有整数之和
- 其参数 L 为所要求和的列表,result 是列表中所有整数的和,最后函数使用 return 将 result 返回
注:
- 在Python中声明一个函数时,不需要声明函数类型,也不需要声明参数的类型。
- Python在实际调用函数的过程中,不需要为不同类型的参数声明多个函数,或不需要在处理不同类型数据的时候调用相应的函数。
- 大部分情况下可以用同一个函数调用不同的数据类型。
上述代码只声明了一个 PrintAll(X) 函数,并没有指定参数的类型。函数调用的时候,不仅可以向其传递一个列表,还可以向其传递一个元组。 可以看到,不管参数作为一个列表,还是一个元组,函数都能被准确地执行。
当然,这并不表示可以向函数传递任何参数,其主要还是取决于函数的实现。在 PrintAll(X) 函数中,只使用了 for 循环语句,以及 print 函数,他们都对所操作的对象没有特别的要求,因此韩束才得以正确地执行。
虽然Python中的函数灵活性很强,但这也意味着一旦出现问题,只有在脚本运行的时候才能被发现。
二、函数调用
在Python中调用自定义函数与系统内置函数的方法相同,只要使用函数名指定要调用的函数,然后在函数名后的圆括号中给出函数的参数即可。如果有多个参数,则不同的参数要以 "," 隔开。
需要注意的是,即使函数不需要参数,也要在参数名后使用一对空的圆括号。
函数调用必须在函数声明之后。
>>> def hi (): # 不需要传递参数,也没有返回值
... print('hi, tutu')
...
>>> hi() # 调用函数,使用一对空括号
hi, tutu # 函数运行的结果,而不是返回值
>>> hi # 只输入函数名,而不加括号
<function hi at 0x031907C8> # 返回的是函数在内存中的地址
>>> def ListSum ( L ):
... result = 0
... for i in L:
... result = result + i
... return result
...
>>> l = [ 1, 2, 3, 4, 5 ]
>>> r = ListSum (l) # 调用 ListSum 函数,传递 l 为参数,将 r 赋值为函数的返回值
>>> print(r) # 输出 r 的值
15
>>> r = hi() # 将 r 赋值为 hi 函数的返回值
hi, tutu
>>> print(r) # 输出 r 的值
None # 表示函数无返回值,也可以理解为函数返回的值为 None