作用域

Posted gaofeng-d

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域相关的知识,希望对你有一定的参考价值。

2.作用域:变量或者函数的声明周期
  里面是里面 外面是外面
  内置的 比如print() 函数
  # 最开始开辟一个自己的命名空间 -内置命名空间
  #加载顺序:内置=>全局=>局部
  #取值顺序: 局部==>全局==>内置
  globals() # 查看全局作用域中的内容
  locals() #查看当前作用域的内容

3.global nonlocal 对于外层变量 如果没有相关关键字修饰的话 只能读 不能改变
  global a # 表示当前作用域使用的a是全局中的变量
  这种 改变是危险的 共享的改变是危险的
  还可以定义一个全局的a(强制的)
  nonlocal a # 找的是局部里面,离他最近的上层的那个变量
  直到找到为止

技术图片
# 7, 下面代码成立么?如果不成立为什么报错?怎么解决?
# 7.1
a = 2
# def wrapper():
#     print(a)
# wrapper()
# 不报错 调用顺序是局部、全局、内置
# 7.2
# a = 2
# def wrapper():
#     global a
#     a += 1
#     print(a)
#
#
# wrapper()
# 这个报错 添加一个关键字 global,只能这个全局变量 不能改变
# 要改变的话 需要加 关键字global
# 7.3
# def wrapper():
#     a = 1
#     def inner():
#         nonlocal a
#         print(a)
#
#     inner()
# wrapper()
# 不报错 读这个变量是可以的
# 7.4
# def wrapper():
#             a = 1
#             def inner():
#                 a += 1
#                 print(a)
#             inner()
#     wrapper()
View Code

 

以上是关于作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

作用域是什么?

JavaScript 作用域 与 作用域链

JS---闭包

angularjs作用域之transclude

Python - 模块