python学习day11
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习day11相关的知识,希望对你有一定的参考价值。
一、命名空间和作用域
A、命名空间分为三种:
1.全局命名空间
2.局部命名空间
3.内置命名空间
三种命名空间的加载值顺序
1.全局命名空间——在运行程序时运行,不在函数内部,从上到下按顺序加载
2.局部命名空间——程序运行中,调用函数才加载
3.内置命名空间——运行程序之前已加载
三种命名空间的取值顺序
在局部调用:局部->全局->内置
在全局调用:全局->局部
B、作用域
作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域
全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被调用,全局有效
局部作用域:局部名称空间,只能在局部范围内生效
globals和locals方法
globals 在函数里后边跟变量可以更改对应全局的变量值
二、函数的嵌套和作用域链
A、函数的嵌套调用
B、函数的嵌套定义
C、函数的作用域链
D、nonlcoal关键字
# 1.外部必须有这个变量
# 2.在内部函数声明nonlocal变量之前不能再出现同名变量
# 3.内部修改这个变量如果想在外部有这个变量的第一层函数中生效
三、函数名的本质——函数名本质上就是函数的内存地址
1、可以被引用
2、可以被当作容器类型的元素
3、可以当作函数的参数和返回值(普通变量)
四、闭包
闭包函数:
内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数(两个或两个以上函数的嵌套,里边的函数有外边的函数的变量名)
例如:
def func(): name = ‘eva‘ def inner(): print(name)
#函数内部定义的函数称为内部函数
由于有了作用域的关系,我们就不能拿到函数内部的变量和函数了。如果我们就是想拿怎么办呢?返回呀!
我们都知道函数内的变量我们要想在函数外部用,可以直接返回这个变量,那么如果我们想在函数外部调用函数内部的函数呢?
是不是直接就把这个函数的名字返回就好了?
这才是闭包函数最常用的用法
闭包函数获取网络应用
from urllib.request import urlopen def index(): url = "http://www.xiaohua100.cn/index.html" def get(): return urlopen(url).read() return get xiaohua = index() content = xiaohua() print(content)
以上是关于python学习day11的主要内容,如果未能解决你的问题,请参考以下文章