一.什么是函数
定义一个事情或者功能,等到需要的时候直接取用就好了,那么这里定义的东西就是一个函数
函数:对代码块和功能的封装和定义.
二.使用函数
使用def关键字来定义函数
def 函数名():
函数体
函数名的命名规则和使用变量基本一样.
函数体就是函数被执行之后要执行的代码.
函数的调用:使用函数名就可以调用函数,写法:函数名(),这个时候函数的函数体会被执行.
三.函数的返回 return
1.函数中遇到return,函数结束,不再继续执行.
2.给函数的调用者一个访问结果.
函数的返回值可以有多个结果
(1)如果return什么都不写或者干脆不写return,那么返回的就是None.
(2)如果return后面写了一个值,则调用者可以接受一个结果.
(3)如果return后面写了多个结果,则调用者可以接收一个元组,构成多个变量.
四.函数的参数
参数,函数在调用的时候指定具体的一个变量的值,就是参数.
1.形参:写在函数声明的位置变量叫形参,形式上的一个完整,表示这个函数需要xxx.
2.实参:在函数调用的时候给函数传递的值,叫实参,实际执行的时候给函数传递信息,表示给函数xxx
3.传参:给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.
五.参数的分类
实参:1.位置参数.2.关键字参数.3.混合参数,位置参数必须在关键字参数前面
形参:1.位置参数.2.默认值参数
六.动态传参
1.动态接收位置参数
在参数位置编写*表示接受任意内容
动态接收参数的时候要注意:动态参数必须在位置参数后面
顺序:位置参数,动态*,默认值参数
2.动态接收关键字参数
使用**来接收动态关键字参数,这个时候接收的是一个字典
最终顺序:位置参数>*args>默认值参数>**kwargs
def func(*args,**kwargs)
动态参数的另一种传参方式:
在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.
七.命名空间
1.内置名称空间
2.全局名称空间
3.局部名称空间
作用域:
1.全局作用域:全局+内置
2.局部作用域:局部(函数被调用)
globals()查看全局的内容
locals()产看当前作用域的内容
3.函数嵌套
函数可以互相嵌套
4.globa 和nonlocal关键
global:在局部访问全局中的内容
nonlocal:在局部寻找外层花鸟属中离他最近的那个变量