
11-Python-作用域和命名空间
发布日期:2021-05-07 13:05:18
浏览次数:12
分类:原创文章
本文共 1134 字,大约阅读时间需要 3 分钟。
目录
作用域
- 作用域:是针对变量而言的,一个变量的作用域总是由在代码中被赋值的地方所决定
- 搜索顺序:LEGB原则(局部作用域、嵌套作用域、全局作用域、内建作用域)
命名空间
- 命名空间:名称到对象的映射。是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立的。一个命名空间中不能有重名。
按变量定义位置分
- 局部命名空间:每个函数所拥有的命名空间,记录函数中定义的所有变量
- 全局命名空间:每个模块加载执行时创建的,记录模块中定义的变量
- 内建命名空间:自带的,任何模块均可以访问,放着内置函数和异常
二者之间关系
- 命名空间定义了在某个作用域内变量和绑定值之间的关系,是键值对的集合,变量名和值一一对应,以字典的形式存在
- 作用域定义了命名空间中的变量能够在多大的范围起作用,解释器定义的一种规则,确定运行时变量查找的顺序、
代码示例
# -*- coding: utf-8 -*-# @Time : 2021/4/8# @Author : 大海def scope_test(): def do_local(): spam = "local spam" def do_nonlocal(): # nonlocal 语句表明特定变量生存于外层作用域中并且应当在其中被重新绑定 nonlocal spam spam = "nonlocal spam" def do_global(): # global 语句可被用来表明特定变量生存于全局作用域并且应当在其中被重新绑定 global spam spam = "global spam" spam = "test spam" do_local() print("After local assignment:", spam) # test spam do_nonlocal() print("After nonlocal assignment:", spam) # nonlocal spam do_global() print("After global assignment:", spam) # nonlocal spamscope_test()# 局部 赋值(这是默认状态)不会改变 scope_test 对 spam 的绑定。 nonlocal 赋值会改变 scope_test 对 spam 的绑定,而 global 赋值会改变模块层级的绑定。print("In global scope:", spam) # global spam
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月22日 04时08分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
文本情感分类
2019-03-04
Python模块_os文件_目录方法
2019-03-04
部署kuboard3 管理工具
2019-03-04
SpringBoot中使用Mybatis访问MySQL数据库(使用xml方式)
2019-03-04
Algorithms Unlocked
2019-03-04
python中的map( )函数及lambda()函数简介
2019-03-04
深度优先遍历(DFS)和广度优先遍历(BFS)
2019-03-04
轮播图——旋转木马(Jquery)
2019-03-04
普通平衡树板子
2019-03-04
操作DOM(二):删除节点、、复制节点、替换节点
2019-03-04
vue(7):表单输入绑定
2019-03-04
JSP内置对象:操作cookie、session对象
2019-03-04
【数算-27】多路查找树【了解】
2019-03-04
【数算-31】【十大常用算法-03】动态规划算法与背包问题
2019-03-04
【SE-02】多线程-02
2019-03-04
$set的使用(视图不能实时更新)
2019-03-04
Spring知识小汇(6)——Bean的自动装配
2019-03-04
一、硬件防火墙
2019-03-04
Javaweb jQuery功能练习
2019-03-04