码迷,mamicode.com
首页 > 其他好文 > 详细

作用域和名称空间

时间:2018-12-10 20:50:21      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:名称   ack   extern   global   work   执行函数   one   spec   __name__   

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

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()) # 全局

  

作用域和名称空间

标签:名称   ack   extern   global   work   执行函数   one   spec   __name__   

原文地址:https://www.cnblogs.com/YangWenYu-6/p/10098516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!