一:为何用函数与不用函数的问题?
组织结构不清晰
代码荣誉
无法统一管理且维护难度大
二:函数分类
内置函数
自定义函数
三:为何要定义函数
函数即变量,变量必须先定义后使用
工具是具备某一种功能的物件,就是程序中函数的概念,实现准备工具的过程称为函数的定义,遇到特定的场景拿来就用称为函数的调用。
(1)函数的定义与变量的定义类似,没有实现定义变量,而直接引用变量,会报错
(2)没有事先定义函数,而调用函数,相当于引用一个不存在的变量
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo()
不会报错,需要明确函数的使用分为定义阶段和调用阶段
四:函数的定义阶段发生了什么事情?
只检测语法,不执行代码
函数的定义语法
def 函数名(arg1,arg2,arg3,...):
''注释''
函数体
return 返回值
def select(sql):
pass
def update(sql):
pass
def delete(sql):
pass
def insert(sql):
pass
五:函数的返回值和函数调用的三种形式
def func():
print('from func')
return 0
func()
函数中可以没有return,此时的返回值为None,应该等同于Return None,return,或者没有Return
大前提:return的返回值没有类型限制
Rreturn可以返回多个值,最后返回的为元组包含的值
六:什么时候该有返回值?
调用函数:结果一系列的操作,最后要拿到一个明确的结果,则必须有返回值,通常有参函数需要有返回值,输入参数,结果计算,得到一个最终的结果。
七:什么时候不需要有?
调用函数,仅仅只是执行一系列的操作,最后不需要有什么结果,则无需返回值,通常无参函数不需要有返回值。
八:函数调用的三种形式?
函数调用的语句形式
函数调用的表达式形式
函数调用可以当做另外一种函数的参数
九:函数参数
形参:在定义函数时,括号内的参数称为形参
实参:在调用函数时,括号内的参数称为实参
特点:形参就是变量名,实参就是变量值
在调用阶段,实参才会绑定形参,调用结束后,解除绑定。
十:参数的分类
(1)位置参数:按照从左到右的位置依次定义的参数
位置形参:必须参数,多一个不行,少一个不行
位置实参:与形参按照位置一一对应
关键字参数:指的是按照name=value的形式,给name传值
注意:位置实参必须在关键字实参前面,一定不要对同一个形参多次传值
(2)默认参数
在定义阶段,就已经为形参传值,意味着在调用阶段可以不用传值
注意:默认参数仅在定义阶段赋值一次,而且仅一次,默认参数的值应该为不可变类型
十一:可变长参数和命名关键字参数
可变长参数指的是实参的个数可变,不固定
实参包括位置实参和关键字实参
实参必须要有两种机制来分别处理按照位置定义的实参溢出的情况:*,和按照关键字定义的实参溢出的情况:**
十二:函数对象
函数本身是第一类对象,指的是函数可以被当做数据传递
数据可以当做参数传入,可以当做函数的返回,可以当做容器类型的元素