今日内容:
1. 函数对象
函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用
1.可以被引用
2.可以当做参数传给另一个函数
3.可以当做一个函数的返回值
4.可以当做容器类型的元素
2. 函数嵌套
函数嵌套分为两大类:
1.函数的嵌套调用: 在调用一个函数过程中,其内部代码又调用了其他函数
2.函数的嵌套定义: 一个函数内部又定义了另一个函数

3.名称空间与作用域(******)
1.什么是名称空间namespaces:
名称空间就是用来存放名字与值内存地址绑定关系的地方(内存空间)
但凡查找值一定要通过名字,访问名字必须去查找名称空间
       
2.名称空间分为三大类
1.内置名称空间:存放的是Python解释器自带的名字
例如:
len
max
print
2.全局名称空间: 存放的是文件级别的名字
例如:以下名字中x\y\z\b\foo都会存放于全局名称空间中
x = 1
y = 2
if x == 1:
z = 3 while True:
b = 4
break def foo():
m = 3 3.局部名称空间: 在函数内定义的名字
例如:
foo内的m这个名字一定是存放于一个局部名称空间中 生命周期:
内置名称空间: 在解释器启动时则生效,解释器关闭则失效
全局名称空间: 在解释器解释执行Python文件时则生效,文件执行完毕后则失效
局部名称空间: 只在调用函数时临时产生该函数的局部名称空间,该函数调用完毕则失效
加载顺序:
内置->全局->局部当初定义函数的位置去确定名字的查找关系 查找名字的顺序:
基于当前所在位置往上查找
假设当前站在局部,查找顺序: 局部->全局->内置
假设当前站在全局,查找顺序: 全局->内置 名字的查找顺序,在函数定义阶段就已经固定死了(即在检测语法时就已经确定了名字的查找顺序),与函数的调用位置无关
也就是说无论在任何地方调用函数,都必须回到当初定义函数的位置去确定名字的查找关系

作用域:
域指的是范围,作用域指的就是作用的范围,分为两种
全局作用域:包含的是内置名称空间与全局名称空间中的名字
特点: 全局有效,全局存活
局部作用域:包含的是局部名称空间中的名字
特点:局部有效,临时存活
global: 在局部声明一个名字是来自于全局作用域的,可以用来在局部修改全局的不可以变类型
nonlocal: 声明一个名字是来自于当前层外一层作用域的,可以用来在局部修改外层函数的不可变类型 4.闭包函数:
1.什么是闭包函数
闭:指的是闭包函数是定义在一个函数内部的函数
包:该内部函数包含对外层函数作用域名字的引用
需要结合函数对象的概念将闭包函数返回到全局作用域去使用,从而打破函数的层级限制
2.为何要用闭包函数
闭包函数提供了一种为函数体传值的解决方案
3.如何用闭包函数

最新文章

  1. .NET项目开发的几个非常重要的项目设置
  2. MYSQL数据库的常用数据类型
  3. Android -- 重设字符并统计原字符以及修改字符的长度以及位置
  4. ES TIPS
  5. 基于s5pv210的uboot总结
  6. [LeetCode]题解(python):100 Same Tree
  7. Fiddler-005-获取 Cookie 信息
  8. To change the sharepoint CA port
  9. 团体程序设计天梯赛-练习集L2-009. 抢红包
  10. Windows - 远程桌面无证书
  11. 开始学习java
  12. CSS中新属性calc()
  13. #WEB安全基础 : HTTP协议 | 0x14 HTTP的详细安全问题
  14. 【NOI2019模拟】搬砖
  15. jquery简易tab切换
  16. streamdataio 实时数据分发平台
  17. css浮动知识点(转)
  18. 纯文本-FileInputStream的编码与解码方式
  19. Idea生成Javadoc
  20. Java虚拟机19:再谈四种引用状态

热门文章

  1. Objective-C NSString/NSMutableString
  2. 洛谷P3833 [SHOI2012]魔法树(树链剖分)
  3. 一个 Java 对象到底有多大?
  4. $Edmonds-Karp$[网络流]
  5. 构造 HDOJ 5400 Arithmetic Sequence
  6. 树莓派 离线安装 apt-get offline
  7. visual studio 2015 key vs2015密钥
  8. 将call/apply方法应用于其他对象上的几种方法
  9. 维控PLC与电流变送器modbus通讯获取电流变送器数据
  10. IntelliJ IDEA安装与破解