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

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

  1. 【python】dir(__builtins__)查看python中所用BIF(内置函数)

    dir(__builtins__)查看python中所用BIF(内置函数)

  2. python 中一些常用的内置函数

    一.常用内置函数 abs(x) 返回绝对值,参数为int float,非字符只能num all(iterable) 如果迭代对象里面的所有值都为真就返回True.all([1, 2, -7]) --- ...

  3. 初识python中的68个内置函数

    内置函数思维导图的链接: https://www.processon.com/view/link/5b72b805e4b08d3622ad8b48 面向对象和反射相关的后面补充

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

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  5. Python学习(八) —— 内置函数和匿名函数

    一.递归函数 定义:在一个函数里调用这个函数本身 递归的最大深度:997 def func(n): print(n) n += 1 func(n) func(1) 测试递归最大深度 import sy ...

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

    本篇涉及内容 内置函数 装饰器 内置函数 callable()   判断对象是否可以被调用,返回一个布尔值 1 2 3 4 5 6 7 8 9 10 11 num = 10 print(callabl ...

  7. 【python之路46】内置函数2,是【python之路18】的补充

    将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析.为了方便记忆,将这些内置函数进行了如下分类: 数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作(8个 ...

  8. 查看python内部模块命令,内置函数,查看python已经安装的模块命令

    查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list或者用 help('modules') 或者用 python -m  ...

  9. 【python基础语法】函数的作用域和内置函数和关键字(第7天课堂笔记)

    一.函数的作用域: 1.全局变量 2.局部变量 3.global 二.内置函数 1.常见的内置函数 print : 输出 input : 输入 type : 查看数据类型 id : 获取数据的内存地址 ...

随机推荐

  1. 安装Vue Devtools

    命令行进入vue-devtools\vue-devtools-master执行 cnpm install (貌似npm不太好使,也可能是我网络代理的原因) (淘宝镜像安装 npm install -- ...

  2. 五、Docker

    1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这 ...

  3. Spring对Bean装配详解

    1.Spring提供了三种装配bean的方式: 2.自动装配bean: 3.通过Java代码装配bean 4.通过XML装配bean 前言:创建对象的协作关系称为装配,也就是DI(依赖注入)的本质.而 ...

  4. 【托业】【新托业TOEIC新题型真题】学习笔记4-题库一->P7

    --------------------------------------单词-------------------------------------- reimbursement n. 报销:偿 ...

  5. Redis和Memcache的区别是什么

    Redis和Memcache都是内存数据库,但它们之间还是有区别的,跟着ytkah看看Redis和Memcache的区别吧 Redis 支持多种数据结构,如string,list,dict,set,z ...

  6. golang 的 TUI 及 GUI 库

    interactive prompt library: abiosoft/ishell                           https://github.com/abiosoft/is ...

  7. function module 调用类对象

    1: 定义一个类,编辑里面的方法 method METHOD1. write EV_P2. ev_p1 = 'test'. endmethod. 2:在其它function module 中调用

  8. git flow 使用步骤

    Mac安装git-flow:brew install git-flow 克隆新代码:git clone git@gitlab.xxx.cn:abc/test.git 切换到远程的develop分支(很 ...

  9. Python 全栈开发一 python初识

    1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  10. [Java in NetBeans] Lesson 14. ArrayList and Collections

    这个课程的参考视频和图片来自youtube. 主要学到的知识点有: 1. Collection: container that contians objects. 2. Difference betw ...