函数命名空间、作用域与闭包函数
2018-09-26 20:46
127 查看
补充之前落下的知识点
函数返回值得注意点
- 返回值没有类型限制
- 返回值没有个数限制
. 多个值用逗号分隔开,返回元祖
. 返回单个值返回本身
_. 没有返回值就返回None - return可以返回值,并且还能结束函数执行的功能,可以有多个return,一旦运行return就终止。
函数对象
- 可以被引用
- 可以当做参数传给另外一个函数
- 变量值可以当做函数的返回值
- 函数可以当做容器类型的元素
名称空间与作用域
什么是名称空间
通俗的理解就是存放名字的地方,存放什么名字呢?存放的是变量名的空间。在之前已经知道变量名和内存中值得内存地址绑定在一起,那么变量名和绑定的内存地址存在哪呢。
在python中有三种名称空间存放的就是各种变量名和它所绑定的内存地址。分别是:内置名称空间、全局名称空间、局部名称空间。
名字的查找顺序
局部名称空间--》全局名称空间--》内置名称空间,这三步之后如果还没找到的话就会报 变量名未定义的错误。
*需要注意的是:在全局无法查看局部的名称,在局部可以查看全局的名称。如下:
x = 1 def func(): print(x) func()
输出结果为 1
x = 1 def func(): x = 2 print(x) func()
输出结果为 2
作用域
什么是作用域
作用域即变量名称的作用范围。
- 全局作用域:(内置名称空间与全局名称空间属于该范围),全局存活,全局有效。
- 局部作用域:(局部名称空间属于该范围),临时存活,局部有效。
注意:作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关
LEGB代表名字查找顺序
locals--》enclosing function--》globals--》_builtins__
- locals是函数内的名字空间,包括局部变量和形参;
- enclosing是外部嵌套函数的名字空间(闭包);
- globals全局变量,函数定义所在模块的名字空间;
- builtins内置模块的名字空间。
闭包函数
什么是闭包函数
内部函数包含对外部作用域而非全局作用域的引用
闭包的意义
返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得该函数无论在何处被调用,优先使用自己外层包裹的作用域。
相关文章推荐
- 函数的命名空间,作用域,闭包等
- python基础之函数参数、嵌套、返回值、对象、命名空间和作用域
- c++ 命名空间 以及 作用域 函数参数 面向对象实验报告
- Javascript学习笔记之函数篇(六) : 作用域与命名空间
- 函数的命名空间,作用域
- Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域
- 函数的命名空间和作用域
- Javascript学习笔记之函数篇(六) : 作用域与命名空间
- PHP 为什么要使用命名空间,命名空间的作用是什么,如何更好的使用命名空间【详解】
- 突发奇想:.net的Web开发新建的页面引用默认哪些命名空间以及它们大概的作用
- XML之命名空间的作用(xmlns)
- 201506231015_《Javascript权威指南(第六版)——作为命名空间的函数、闭包、 》(P181-193)
- 命名空间的作用及编程举例
- 头文件、预处理命令、命名空间(作用域)、链接
- javascript中 ”匿名函数赋值给变量“与“直接命名函数”有什么不同的作用?
- javascript变量、作用域、命名空间
- C++中命名空间内只能声明函数,不能定义
- js关于命名空间的函数实例
- 关于PHP中命名空间和spl_autoload_register函数的关系说明
- 【Python3的命名空间与作用域,闭包函数,装饰器】