Day12课后有感

 

今日内容概要

  • 名称空间

  • 名字的查找顺序

  • 作用域

  • global与nonlocal关键字

  • 函数名对象

  • 函数的嵌套

     

我觉得我学会了?学废了?

 

名称空间的概念

其实就是存放变量名与变量值绑定关系的地方 类似于商品库存表,记录物品与存放地址

 

 

名称空间的分类

1.内置名称空间

python解释器提前给我们定义好的,python自带的作用域,打开python➡️空间运行    关闭程序➡️空间消失

举个🌰
len() print() open()


2.全局名称空间


在py文件中编写的代码运行产生的名字都会存到全局名称空间,打开py文件➡️空间运行   关闭py文件➡️空间消失

举个🌰

name = 'jason' # 变量名name存入全局名称空间 
def index(): # 函数名index存入全局名称空间
pass
if True:
a = 111 # 变量名a存入全局名称空间
for i in range(10): # 变量名i存入全局名称空间
pass
while True:
b = 222 # 变量名b存入全局名称空间


3.局部名称空间

函数体代码运行产生的都是局部名称空间,函数代码体运行➡️空间运行   函数代码体关闭➡️空间消失

举个🌰

def index():
name = 'jason' # name存入局部名称空间

 

名字的查找顺序

"""
名称空间是用来存放名字与值绑定关系的地方
那么问题来了 如果我要查找一个名字 到底去哪个名称空间 是否有先后顺序
"""
# 在查找名字的时候 一定要先搞清楚自己在哪个空间


1.如果在局部名称空间,局部名称空间专门存放函数体代码的(比作房间抽屉)

局部名称空间 >>> 全局名称空间 >>> 内置名称空间  #  如果你要找的东西记得放在房间抽屉里的,那么就先找房间抽屉,找不到就在房间里找一遍,再不行全屋搜查。

(房间抽屉)         (房间)             (整个python屋)

 

2.如果在全局名称空间   # 如果你要找的东西记得放在房间里了,直接从房间开始找,找不到再扩大搜查范围

全局名称空间 >>> 内置名称空间    

  (房间)           (整个python屋)


# 想办法让三个名称空间中都有相同的名字

举个🌰
len = '我是全局名称空间中的len'   # 本来就有的条件,不用搭理
def index():                              # 真正添加 '局部名称空间的len' 的运行代码。

len = '我是局部名称空间中的len'   # 赋值
print(len)                                  # 运行一下
index() # 调用函数 函数体就会执行 就会产生局部名称空间  # 函数调用一下,你就有了三个相同的名字,python解释器本身自带len,py文件里也编写了,也写了个函数
print(len)

 

 

x = 111 
"""如果函数没有被调用 那么不要去管函数体代码有多复杂 先跳过"""
def f1():
    x = 222
    def f2():
        x = 333
        def f3():
            print(x)  # 检测语法的时候 发现f3的局部名称空间将来会有x 所以查找的时候就跟f3的局部名称空间要(特例 可以忽略)
            x = 444 
            # print(x)
        f3()
    f2()
f1()  # 这条代码会报错,主要是理解两句注释的概念,学习找名字顺序

  

 

好冷漠的局部名称空间呀~~各自独立,互不相干

 

 

作用域

# 作用域就是名称空间能够作用的范围。(我要给你开辟一个空间)

内置名称空间
程序任意阶段任意位置均可使用(全局有效)

全局名称空间
程序任意阶段任意位置均可使用(全局有效)

局部名称空间
一般情况下只在各自局部名称空间中有效(局部有效)

 '''也可以通过一些手段打破规则''' (啥手段,我会学到吗???)


global与nonlocal关键字

global实际运用:

 

 

 

 

nonlocal实际运用 :

 

 

函数名的多种用法

虽然报错了,但是看着上面各种花里胡哨的颜色,记得更牢了

 

 

 

 

 

 

 

 

函数的嵌套

 

 

 

函数的定义

 

 

 

 

 

 
posted @ 2022-03-17 17:33  ji哩咕噜  阅读(38)  评论(0编辑  收藏  举报