当前位置: 首页 > news >正文

作用域和名称空间

名称空间: 用来存放名字(变量, 函数名, 类名, 引入的模块名)的

1. 全局名称空间: 我们在py文件中自己写的变量, 函数.....
2. 内置名称空间: 我们python解释器提供好的一些内置内容(print, input....)
3. 局部名称空间: 在我们执行函数的时候.会产生一个局部名称空间. 放的是: 函数内部的内容(变量, 函数,类...)

名称空间可能会有无数个, 局部名称空间而言. 相对是独立的.一般互不干扰

作用域:
1. 全局作用域: 内置+全局
2. 局部作用域: 局部

globals() 查看全局作用域
locals() 查看当前作用域

# a = 10
#
# lst = [1,2,3,4]
#
# # 内置函数
# print("你好啊,我叫赛利亚")
#
# def chi():
#     a = 10
#     b = 20
#
#
# # 如果不调用chi() chi中的a和b都不会创建
# # 如果调用了chi() 会创建a,b
# chi()

# def chi():
#     a = 10
#     print(a)
#
# chi()
# print(a) # 报错

# def print(b):
#     pass
#
# a = 10
# def chi():
#     print(a)
#
# chi()

# 从全局去找局部 -> 找不到
# 局部去找全局 -> 可以找到

# 怎么查看全局和局部中的内容
# a = 10
# b = 20
#
# def 今天又是星期五():
#     pass
#
# # 查看全局作用域中的内容
# print(globals()) # globals 全局作用域: 内置+全局名称空间
# '''
# {'__name__': '__main__', '__doc__': None, '__package__': None,
# '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000000000265C080>,
# '__spec__': None, '__annotations__': {},
# '__builtins__': <module 'builtins' (built-in)>, => print, input open
# '__file__': 'D:/python_workspace_s18/day10 函数的进阶/04 名称空间和作用域.py',
# '__cached__': None,
# # 自己写的. 全局
# 'a': 10, 'b': 20, '今天又是星期五': <function 今天又是星期五 at 0x0000000001D42E18>}
# '''
#

def chi():
    a = 20
    b = 30
    print(locals()) # 查看当前作用域中的内容
    print(globals()) # alex,老男孩儿, 武sir, 全局作用域中的内容
chi()

# print(locals()) # 全局
# print(globals()) # 全局

  

转载于:https://www.cnblogs.com/YangWenYu-6/p/10098516.html

相关文章:

  • 云主机文件系统readonly处理案例
  • STM8S003F3通过PWM波实现三基色呼吸灯(转)
  • 前端技术周刊 2018-12-10:前端自动化测试
  • puppet连载22:define用法
  • Django2.0——请求与响应(下)
  • 华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来
  • CentOS7配置Kubernetes(K8S)集群
  • Docker在Linux/Windows上运行NetCore文章系列
  • 使用Python将MongoDB数据导到MySQL
  • Rem之自适应js
  • ubuntu16.04下安装postgresql 10.3
  • Groovy与Java集成常见的坑
  • SQLserver视图修改sql
  • Visual Studio Code编写C/C++代码常见问题
  • iOS8 自定义UITabBar (使用popToViewController导致的UITabBarButton重叠的问题)
  • 【面试系列】之二:关于js原型
  • 2017 年终总结 —— 在路上
  • Angular4 模板式表单用法以及验证
  • go append函数以及写入
  • jquery ajax学习笔记
  • LeetCode29.两数相除 JavaScript
  • leetcode讲解--894. All Possible Full Binary Trees
  • tweak 支持第三方库
  • vue--为什么data属性必须是一个函数
  • 阿里云前端周刊 - 第 26 期
  • 闭包--闭包之tab栏切换(四)
  • 如何编写一个可升级的智能合约
  • 手机端车牌号码键盘的vue组件
  • 一个完整Java Web项目背后的密码
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​批处理文件中的errorlevel用法
  • #微信小程序:微信小程序常见的配置传旨
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (LeetCode 49)Anagrams
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (转)负载均衡,回话保持,cookie
  • **PHP分步表单提交思路(分页表单提交)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core Swagger 过滤部分Api
  • .NET Core WebAPI中封装Swagger配置
  • .Net Core与存储过程(一)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [ 转载 ] SharePoint 资料
  • []T 还是 []*T, 这是一个问题