结构:python
def 函数名():ide
函数体
函数
执行:spa
函数名()orm
返回值:对象
return
内存
一,函数中,遇到return终止函数作用域
二,返回值,返回给了函数的调用者:函数名()it
return单个值,返回单个值class
return多个值,返回一个由这多个值组成的元祖
函数传参:
实参角度:
位置参数:从前至后一一对应
关键字参数:一一对应,不用按照顺序
混合参数:关键字参数必定要在位置参数的后面
形参角度:
位置参数:按照顺序,一一对应
默认参数:若是不传参则使用默认参数,传参则使用传入参数,经常使用的会设置默认参数
动态参数(万能参数):
*args接收所有位置参数,聚合为元祖 **kwargs接收所有关键字参数,聚合为字典
函数调用时,可迭代对象前加*,表明函数打散
*args,默认参数,**kwargs顺序
函数的进阶:
名称空间:存储的是全局(py文件)的变量与值的对应关系
临时名称空间:当函数执行时,会在内存中临时开辟一个空间,此空间记录函数中变量与值的对应关系,随着函数的结束,临时名称空间而关闭
解释:
Python代码运行的时候遇到函数是怎么作的,从Python解释器开始执行以后,就在内存中开辟里一个空间,每当遇到一个变量的时候,就把变量名和值之间对应的关系记录下来,可是当遇到函数定义的时候,解释器只是象征性的将函数名读如内存,表示知道这个函数存在了,至于函数内部的变量和逻辑,解释器根本不关心。
等执行到函数调用的时候,Python解释器会再开辟一块内存来储存这个函数里面的内容,这个时候,才关注函数里面有哪些变量,而函数中的变量回储存在新开辟出来的内存中,函数中的变量只能在函数内部使用,而且会随着函数执行完毕,这块内存中的全部内容也会被清空。
咱们给这个‘存放名字与值的关系’的空间起了一个名字-------命名空间。
代码在运行伊始,建立的存储“变量名与值的关系”的空间叫作全局命名空间;
在函数的运行中开辟的临时的空间叫作局部命名空间。
python中的空间:
全局名称空间
临时(局部)名称空间
内置名称空间:len print 等内置函数
加载顺序:内置名称空间-->全局名称空间-->函数执行时:临时名称空间
做用域:
全局做用域:内置名称空间 全局名称空间
局部做用域:临时(局部)名称空间
取值顺序:临时(局部)名称空间-->全局命名空间-->内置命名空间
取值顺序知足就近原则
函数坑:
取值:局部只能引用全局的变量可是不能修改,修改会报错
global: 1,能够修改全局变量 2,在局部空间声明全局变量
nonlocal: 1,不能操做全局变量 2,在局部做用域中,对父级做用域(或者更外层做用域非全局做用域)的变量进行引用和修改,而且引用的哪层,从那层及如下此变量所有发生改变 3,子名称空间只能引用父级空间的变量,可是不能修改
函数的嵌套:
程序执行到哪里,只要遇到函数名(),就执行
函数名的运用:
直接打印函数名,返回函数内存地址
函数名能够做为函数的参数
函数名能够做为函数的返回值
函数能够做为容器类型的元素