函数作用域 闭包 纯函数
>函数作用域
作用域是指变量的使用范围,如果变量只能在本函数使用,那称为局部变量,在代码非函数定义的变量就是全局变量,全局变量可以由多个函数或者代码使用。
globals 函数和locals函数
globals()获取所有全局变量
locals ()获取所有局部变量
>纯函数
1.纯函数的概念:
简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数
2.纯函数的三个原则:
变量只在函数作用域内获取,作为函数的参数传入
不会产生副作用,不会改变被传入的数据或者其它数据(全局变量)
相同的输入保证相同的输出(不管在什么时候调用,传入的参数相同,返回的结果就相同)
3.函数的副作用
副作用是指函数被调用,完成了函数既定的计算任务,但同时因为访问了外部数据,尤其是因为对外部数据进行了写操作,从而一定程度的改变了系统环境
>闭包
满足闭包条件:
条件1 :函数中嵌套函数
条件2:外层函数只返回嵌套函数的函数名
条件3:内存嵌套函数有引用外层的一个非全局变量
作用: 实现数据的锁定 提高稳定性
def func(i):
count = 0
def count_1(count):
count = count + 1
print(count)
return count_1
res = func(1)
res(7) # 可以调用count_1函数 传入的i不是全局变量