首页 > 代码库 > python 全栈 python基础 (九)作用域 函数嵌套 闭包

python 全栈 python基础 (九)作用域 函数嵌套 闭包

名称空间与作用域

变量,函数

分成三种

 

#内置名称空间  内置函数,

         系统函数内部自定义的。

python查看内置函数,命令:

import builtins

dir(builtins)

技术分享

#全局名称空间  文件中 顶头写,没有任何缩进定义的函数或是变量。

定义之后,在整个文件的任何位置都可以用。

 技术分享

#局部名称空间 

定义之后,在局部环境内可以调用,例如在一个定义函数中定义的变量,只能在当前函数内部调用,往外全局或是其他函数均不能调用。

  技术分享

技术分享

在外部,或是其他定义的函数调用的话,会报错!

内置和全局名称空间 合称全局作用域

局部名称空间 叫做局部作用域

  #先定义后使用!!!

 技术分享

使用寻找过程: 局部找 本层找不到的话,会依次往上一层定义的函数去找,找不到--->全局找 ,全局找不到的话 ---> 从系统的内置找

 技术分享

 技术分享

技术分享

技术分享

查询  全局 globals()   局部:locals()  输出为字典格式

x=1

def func()

    print("from func")

    x=2

print(globals())

 

函数嵌套及静态嵌套域

#嵌套调用

技术分享

#嵌套定义

 技术分享

函数对象与闭包

 

函数是第一类对象。

函数可以被赋值,

可以把函数当成参数传递,

把函数当成返回值,

把函数当成容器类型的元素。

 技术分享

技术分享

技术分享

#闭包

定义:首先必须是内部定义的函数,该函数包含对外部作用域而不是全局作用域名字的引用。

没值的话会返回None.

 技术分享

技术分享

无参装饰器

python 全栈 python基础 (九)作用域 函数嵌套 闭包