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的主要内容,如果未能解决你的问题,请参考以下文章

python学习day11

python学习-day11

python学习day11

python学习day11

python学习日记:day11-----装饰器

python学习-day11-内建函数