一,函数的定义以及自定义方式:
函数:相当于一个工具,可以大大节省效率,使用方便。
函数特点:必须是先定义后调用,定义后可以在任意行地方调用。
函数自定义的方式:def 函数名+():下面是函数的代码块

二,return在函数中的作用:
当你不写return 时,函数默认返回None
当你只写return时,除了返回None,之外还会结束函数的运行
当你写return None时,返回None,还会结束函数的运行。
当你写return返回某个值时,它可以返回python任意数据类型。
当你写return 返回多个值时,它返回的多个值会将以元组的形式返回。自己手动加想要的数据类型可以改变固定的返回数据类型

在函数里,不管写不写return 都是有返回值的。不写时,默认返回为None

三,函数的参数:
1.形参:函数在定义阶段,小括号内定义的变量名,就是该函数的形参。形参也要取的见名思意。

2.实参:函数在调用阶段,小括号内实际传入的值 就是该函数的实参。

3.形参和实参的关系:形参和实参的绑定关系只在函数的调用时才存在,而且只还函数内部才是有效的。
一旦函数被return,他们的关系自动解除

4.位置形参:在定义函数的时候,按照位置从左至右依次定义变量名,然而同一个形参是绝对不能被多次赋值。

5.位置实参: 在函数的调用阶段,传入的参数会按照对应位置,多一个或少一个都不行。
位置实参有两种传参方式:
第一种: 根据形参的位置一一对应的传参

第二种:关键字传参。

在函数的调用阶段位置参数和关键字参数是可以混合使用的,但是位置参数一定要在关键字参数的前面。

6.默认值参数:
1.在函数定义的阶段,形参就已经被赋值了。默认形参必须放在位置形参的后面
2.在函数调用的时候,如果给默认的形参传值与默认传的值不一样时
那么是使用修改后的值
3.默认值参数一般会用到当形参接受的值比较单一的情况。

7.可变长参数:在函数中形参和实参个数不固定。那么就可以用星 和星星来接受多余的位置参数。

首先是一个星:

形参:当形参中有一个星,那么实参中溢出的位置参数全部接收,然后保存成元组的形式赋值给形参中星后面的参数名

实参:当实参中有一个星,那么就把该实参的值打散,列表,元组,字符串均可打散

两个星星:

形参:当形参中有两个星,那么实参中溢出的关键字参数全部接收,然后保存成字典的形式赋值给形参中星后面的参数名

实参:当实参中有两个星星,那么还是把该实参打散,只有字典才能打散

 

 

四,函数的嵌套:

通过传参来控制函数执行不同的功能,在哪层定义的函数就只能在哪层调用。

五,名称空间:
名称空间就存放各种有定义名字的地方
名称空间分为三大类:

1.内置名称空间:在python解释器自带的名称,解释器启动时,就可以内置功能就生效,解释器关闭时,就失效。
把这些内置具有功能的名称放在一个内置空间内。

2.全局名称空间:顶头写的名字,在执行文件的时候生效,在文件结束或者文件执行期间被删除的就失效
既不是内置空间的也不是函数内的。

3.局部名称空间:函数内部定义的名字和函数的参数的都是在局部空间
函数调用时生效,结束时失效

它们的生命期:内置空间和全局空间的差不多都是从头活到尾。
当python解释器开启时内置空间就活,关闭时则挂。
当写文件时,全局空间就活,文件结束或者执行期间被删除时就挂。
局部空间的生命周期短暂,调用则活,用完就挂。

它们的加载顺序:内置名称空间 ----- 全局名称空间------ 局部名称空间
查找名字顺序: (以当前位置为起始开始找)局部名称空间 ------ 全局名称空间--------内置名称空间

 

python自定义函数返回列表 python自定义函数return_作用域

六.作用域:就是发挥作用的范围

内置名称作用域和全局名称作用域:在程序的任何位置都能访问得到。合成为全局作用域。
会伴随程序的整个生命周期

局部名称作用域:只在作用于函数内。调用时生效,调用结束后失效。

七.函数对象:

1.函数名可以被传递
2.函数名可以被当做函数的返回值
3.函数名可以被当做参数传递给其他函数
4.函数名可以当做容器类型的参数