函数基础
函数:
函数是组织好的,可以重复使用,用来实现单一或相关联功能的代码段
函数即变量,变量必须先定义后使用,未定义而直接引用,相当与在引用一个不存在的变量名
函数定义:
def 关键词开头():
函数体
def是固定的,不能变,他就是定义函数的关键词
函数名,由数字,字母,下划线任意组合,同样不能以数字开头,要有可描述性
注释:每个函数都应该对功能和参数进行相应的说明,应该写在函数下面的第一行,以增强代码的可读性。
调用:就是函数名加括号()
函数返回值 return
在函数中如果遇到return,直接结束函数,return以后的内容不会执行,作用与循环中的break差不多
在没有返回值得情况下,print(def 函数())返回None,
return 单个值 时,返回的这个元素的类型就是什么类型
return 多个值 时,返回的值是一个元组,所有的返回值作为元组中的一个函数
def func1(): a = 1 b = 2 c = [] d = "alex" e = {} return a,b,d #(1, 2, 'alex') <class 'tuple'> # print(func1(),type(func1()))
函数的参数(形参和实参)
形参即变量名(变量的名字)实参是指变量值,函数调用则将值绑定到名字上,函数调用结束后,解除绑定
应用:
位置参数:按照从左到右的顺序定义的参数 一一对应
位置形参:必选的参数
位置实参:按照位置给形参传值
关键字参数:按照key= value的形式定义实参
无需按照位置为形参传值
注意的问题:关键字实参必须在位置实参的右面,位置参数在左,关键字参数在右
对同一个形参不能重复传值,即位置参数赋值后,右面不能再以关键字参数赋值,不然会报错
默认参数:形参在定义的是就已经为其赋值
可以传值,也可以不传值,经常变化的参数可以定义成位置参数,变化较小的可以定义成默认参数(形参)
注意问题:1.只在定义时赋值一次
2.默认参数定义在位置形参右边
3.默认参数通常最好定义成不可变的类型
默认参数中的一个陷阱点
默认参数如果定义成可变的类型。例
def my_func1(a,b=[]): b.append(a) print(b) my_func1("alex") #['alex'] my_func1("taibai") #['alex', 'taibai']
当默认参数定义成可变的类型时,这个可变的数据类型(例如list)的地址是指向的同一个。即,后面添加参数的都会出现在这个(list内)地址内部,而不是又新建一个列表。