函数是组织好的,能够重复使用,用来实现单一或相关联功能的代码段app
函数即变量,变量必须先定义后使用,未定义而直接引用,至关与在引用一个不存在的变量名函数
def 关键词开头():spa
函数体code
def是固定的,不能变,他就是定义函数的关键词blog
函数名,由数字,字母,下划线任意组合,一样不能以数字开头,要有可描述性class
注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面的第一行,以加强代码的可读性。变量
调用:就是函数名加括号()循环
在函数中若是遇到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内)地址内部,而不是又新建一个列表。