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

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

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

 代码:

#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错误。

原文地址:https://www.cnblogs.com/xiaxiaoxu/p/9785546.html

时间: 2024-10-06 15:23:35

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

Python中的多个内置函数举例

Python内置函数: 官方帮助文档: https://docs.python.org/2.7/ 返回数字的绝对值. def fun(x): if x < 0: return -x return x print fun(10) 常用函数: abs() >>> abs(-100) 100 取列表最大值和最小值 max() >>> max('1235',123) '1235' min() >>> min('asdfq3w45') '3' len()

python基础12_匿名_内置函数

一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, 66] def binary_search(dataset, find_num): print(dataset) if len(dataset) > 1: mid = int(len(dataset) / 2) if dataset[mid] == find_num: # find it print

python学习之路-4 内置函数和装饰器

本篇涉及内容 内置函数 装饰器 内置函数 callable()   判断对象是否可以被调用,返回一个布尔值 1 2 3 4 5 6 7 8 9 10 11 num = 10 print(callable(num))   # num不能够被调用,返回False    def f1():     print("name")    print(callable(f1))     # f1可以被调用,返回True    # 输出 False True ?chr()   将十进制整数转换为asc

python&#39;s fourthday for me 内置函数

locals:  函数会以字典的类型返回当前位置的全部局部变量. globals:  函数会以字典的了类型返回全部的全局变量. a = 1 def func(): b = 2 print(locals()) print(globals()) func() 字符串类型的代码执行:eval, exec, complie eval: 执行字符串类型的代码,并返回最终结果. print(eval('2+2')) # 4 n = 4 print(eval('n+4')) # 8 eval('print(6

python补充最常见的内置函数

最常见的内置函数是: print("Hello World!") 数学运算 abs(-5)                         # 取绝对值,也就是5 round(2.6)                       # 四舍五入取整,也就是3.0 pow(2, 3)                        # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5 cmp(2.3, 3.2)                   # 比较两个数的大小

python之路——5、内置函数和匿名函数

阅读目录 楔子 内置函数 匿名函数 本章小结 返回顶部 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印一下自己的名字. 你们是怎么打的呀? 是不是print('xxx'),好了,现在你们结合我刚刚说的函数的调用方法,你有没有什么发现? 我们就猜,print有没有可能是一个函数? 但是没有人实现它啊...它怎么就能用了呢? 早在我们“初识函数”的

[python] 之all()和any()内置函数

在python 2.5版本以上开始引入,其基本使用方法如下: 一.all()内置函数 语法:all(iter) 说明: 1. iter为可迭代对象,比如列表,元组,字符串... 2. 若iter中的每一个元素(全部)都为布尔真(或布尔值意味着False的一些元素,比如'0','False',空字符' ' 等)时,返回True 3. 空的列表或元组,也返回True 二.any()内置函数 语法:any(iter) 说明: 1. iter为可迭代对象,比如列表,元组,字符串... 2. 若iter中

Python之lambda表达式和内置函数

lambda表达式其实就是简化的函数表达式. 它只用于处理简单逻辑, 它会自动return数据 通常定义一个函数,按照以下形式: def  func(arg):       return arg +1 result = func(100) print result 101 以上函数用lambda表达式可以这么写: func2 = lambda a: a+1 result = func2(100) print result 在lambda表达式中,func2 相当于函数表达式中的func,即函数的

Python基础(七)内置函数

今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. 1 2 3 4 5 6 print(abs(-18))          print(abs(0.15)) result: 18 0.15 2.all(iterable) 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False