一、函数存在的意义
函数存在就是解决以下问题的:
- 程序组织结构不清晰,可读性差
- 代码冗余
- 可维护性、可扩展性差
二、定义函数
函数的定义:就相当于事先将函数体代码保存起来,然后将内存地址赋值给函数名,函数名就是对这段代码的引用,这和变量的定义是相似的。
定义函数的语法:
def 函数名(参数1,参数2,...):
"""文档描述"""
函数体
return 值
def: 定义函数的关键字;
函数名:函数名指向函数内存地址,是对函数体代码的引用。函数的命名应该反映出函数的功能;
括号:括号内定义参数,参数是可有可无的,且无需指定参数的类型;
冒号:括号后要加冒号,然后在下一行开始缩进编写函数体的代码;
"""文档描述""": 描述函数功能,参数介绍等信息的文档,非必要,但是建议加上,从而增强函数的可读性;
函数体:由语句和表达式组成;
return 值:定义函数的返回值,return是可有可无的。
三、调用函数与函数返回值
函数的使用分为定义阶段与调用阶段,定义函数时只检测语法,不执行函数体代码,函数名加括号即函数调用,只有调用函数时才会执行函数体代码。
#定义阶段
def foo():
print('in the foo')
bar()
def bar():
print('in the bar')
#调用阶段
foo()
执行此程序文件时,将该文件从硬盘加载进内存,将函数体的内存地址赋值给函数名。
若需要将函数体代码执行的结果返回给调用者,则需要用到return。return后无值或直接省略return,则默认返回None
,return的返回值无类型限制,且可以将多个返回值放到一个元组内。
>>> def test(x,y,z):
... return x,y,z #等同于return (x,y,z)
...
>>> res=test(1,2,3)
>>> print(res)
(1, 2, 3)
返回逗号隔开的多个值,就是返回一个元组
,我们要知道,元组就是可以这样写的x,y,z
,不用加括号。
return是一个函数结束的标志
,函数内可以有多个return,但只执行一次函数就结束了,并把return后定义的值作为本次调用的结果返回,return后面的语句是永远都执行不到
。