python中的作用域以及内置函数globals()-全局变量、locals()-局部变量

枫铃3年前 (2021-07-10)Python274

在python中,函数会创建一个自己的作用域,也称为为命名空间。这意味着在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找。

通过内置函数globals()返回的是python解释器能知道的变量名称的字典(变量名:值);

而locals()函数返回的是函数内部本地作用域中的变量名称字典。由此可以看出,函数都是由自己独立的命名空间的。

查看全局变量和局部变量:

#coding=utf-8

outerVar="this is a global variable"
def test():
    innerVar="this is a local variable"
    print "local variables:"
    print locals()

test()
print "global variables:"
print globals()   

结果:
在这里插入图片描述
通过全局变量,也可以知道内置属性__file__指的是当前运行的文件名称,name__指的是__main,也就是自己的意思

变量相关–变量解析规则

在python的作用域规则里面,创建变量时一定会在当前作用域里创建同样的变量,但访问或修改变量时,会在当前作用域中查找该变量,如果没找到匹配的变量,就会依次向上在闭合作用域中进行查找,所以在函数中直接访问全局变量也是可以的。

但是变量在函数调用之前必须被声明,否则报错

代码:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#coding=utf-8
outerVar = "this is a global variable"
def test() :
  innerVar = "this is a Local variable"
  print outerVar#函数里面没有,就去外边找
  print n 
n = 10
test()

结果:
在这里插入图片描述
变量相关—变量生存空间

变量不仅仅是存在于一个个的命名空间中,它们还都有自己的生存周期,全局变量的生存周期是在整个程序执行期间有效,而局部变量的生存周期只在当前作用域中有效,一旦这个作用域不存在了,比如函数执行退出了,变量的生存周期就结束了。 外部不能使用函数的局部变量

代码:

#encoding=utf-8
outerVar = "this is a global variable"
def test() :
  innerVar = "this is a Local variable" 
test()
print innerVar

结果:
在这里插入图片描述
innerVar变量是函数中的局部变量,所以在函数执行结束后,再去访问该变量,就会报NameError错误。

相关文章

一道问题引出的python中可变数据类型与不可变数据类型

一道问题引出的python中可变数据类型与不可变数据类型

一. 问题的提出 我们先来看两个对比 第一道题,当对象为整数时,最终结果:b = 2, a =...

python socket实现文件传输(防粘包)

1.文件传输的要点: 采用iterator(迭代器对象)迭代读取,提高读取以及存取效率; 通过fo...

Python  mysql 索引原理与慢查询优化

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。