全局变量和局部变量

命名空间

1. 函数外部

函数外部声明的变量,可以被所有函数公共访问【所有地方都能访问这个变量】

函数的外边是一个空间:全局命名空间

2. 函数内部

一个函数中声明的变量,智能在函数内部去访问【函数的外面是访问不到这个变量】

函数的内部是一个空间,局部命名空间

作用域

作用域:就是起作用的范围

什么时候使用

全局变量

一旦一个数据,要被多个函数同时访问是,就可以将这个变量声明为全局变量。

全局变量声明在全局命名空间中,作用域是当前文件中的所有位置。

局部变量

局部变量:声明在函数内部的变量,只能在当前函数内部访问,函数执行完成(堆内存执行完成后函数就回收)

后局部变量就随着函数被回收了!

一旦当一个数据,在函数中临时使用,使用完之后就没有作用的数据,就可以声明为局部变量在当前函数内部使用。

操作方式

全局变量的访问

函数内部:

可以直接访问全局变量中的数据

函数外部:

可以直接访问全局变量中的数据

全局变量的修改

不可变类型全局变量:如 字符串

如果要修改的全局变量是不可变类型,直接使用global 引入并修改

name = "tom"

def test():

global name

name = "jerry"

test()

print(name)

# jerry

可变类型全局变量:如 列表

修改可变类型内部的数据,直接修改即可。

给可变类型全局变量重新赋值,需要使用 global关键字 引入

lst = [1]

def test():

# 修改可变类型内部的数据,直接修改即可

lst.append(2)

test()

print(lst)

# [1, 2]

=======================

lst = [1]

def test():

# 给可变类型全局变量重新赋值,需要使用 global关键字引入

global lst

lst = [1,2,3]

test()

print(lst)

# [1, 2, 3]

使用函数查询全局变量和局部变量

如果一个 python文件中会出现全局变量和局部变量,能否通过固定的语法查询到这些出现的变量,

让我们可以直观的看到一个文件中都有哪些全局变量,一个函数中都有哪些局部变量?

globals() 访问一个文件中的全局变量

locals() 访问代码所在位置命名空间中的变量

放在函数中,访问的就是当前函数的局部变量

放在函数外,访问的就是和 globals() 一样的全局变量

name = "tom"

age = 18

def test():

name = "jerry"

lst = [18]

print(locals())

#

test()

print(globals())

print(locals())

# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.sourcefileloader object at>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': 'c:/Users/Administrator/Desktop/cs.py', '__cached__': None, 'name': 'tom', 'age': 18, 'test': }

变量的查询顺序

# 思考,下面的代码运行出现什么结果?为什么?

name = "tom"

def test():

print(name)

name = "jerry"

test()

表现:会出现 UnboundLocalError 错误,使用了一个未赋值的局部变量

规则:变量使用时,查询顺序就近原则【找变量离自己声明最近的一份命名空间】

python 中有一个固定的查询顺序,LEGB原则【就近原则】:

L -> Local 本地:局部 函数内部声明的变量

E -> Enclosing:嵌套:函数内部

G -> Global:全局:python文件的内部

B -> Builtins:python内建

底层:函数内部使用一个变量时,底层代码将变量的声明提升到函数的头部,但是赋值的过程还在原来的位置,此时如果在赋值之前使用变量,就会出现 变量和值 没有绑定的情况,于是就出现了 UnboundLocalError

原文链接:https://blog.csdn.net/qq_36078992/article/details/105527132

python的全局变量能暂存数据吗_Python 中的全局变量 局部变量相关推荐

  1. python的全局变量能暂存数据吗_【Python】Python之全局变量

    ‍‍‍‍最近的两个Python项目由于使用多线程的缘故,需要频繁用到全局变量.在Tcl/tk中可以使用命名空间的形式限制全局变量的引用范围.但是在Python中似乎没有看到类似的定义.在网上看了看关于 ...

  2. python中全局变量的定义及调用_python中定义全局变量

    python中怎么定义全局变量 python中在哪些情况下必须使用global来声明全局变量 python class里面的全局变量问题 python中的本地变量(local variable)和全局 ...

  3. python中int数据范围_Python中int的取值范围是多少

    Python中int的取值范围是多少 发布时间:2020-10-30 09:33:50 来源:亿速云 阅读:66 作者:小新 这篇文章将为大家详细讲解有关Python中int的取值范围是多少,小编觉得 ...

  4. python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化

    使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...

  5. bootstraptable中responsehandle获取数据缺失_Python中的向量化字符串操作

    Python的一个使用优势是它在处理和操作字符串数据方面相对容易. 在此基础上Pandas提供了一套全面的向量化字符串操作(vectorized string operation),这些操作成为处理现 ...

  6. angular中如何定义全局变量_如何在Angular 2 / Typescript中声明全局变量?

    这是最简单的解决方案,Service没有/ 也没有Observer: 将全局变量放在文件中,然后导出它们. // // ===== File globals.ts // 'use strict'; e ...

  7. C语言全局变量(c文件和h文件中的全局变量、静态全局变量)使用注意事项

    C语言在头文件中包含全局变量有三种形式: 1 在头文件中声明一个全局变量,在一个C文件中定义全局变量,然后在所有的引用了这个头文件的C文件里都可以使用该全局变量值. 如在main.c定义 int a ...

  8. js定义全局变量 vue页面_在vue项目中 实现定义全局变量 全局函数操作

    写在前面: 如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数,这两个设置不太难,而且有一 ...

  9. 传智教育 | Java教程:feature分支开发到一半时切换到bugfix分支,如何暂存数据?

    1.解决思路 ​ 在工作过程中,当你正在当前feature分支上进行功能的开发,突然来了一个bug,要创建一个bugfix修复分支进行修复.但是当前feature分支你只开发了一半,显然你去提当前的半 ...

最新文章

  1. Jenkins plugin
  2. 写入usb设备 linux 程序,模拟物理USB设备Linux
  3. 联合查询是要多创建一个实体类么_[译] 如何用 Room 处理一对一,一对多,多对多关系?...
  4. 如何用C语言编写PHP扩展的详解
  5. ObjectArx开发对txt文本文件的操作一例
  6. 【数据库bug修复】——Authentication plugin ‘caching_sha2_password‘ is not supported
  7. diy实现spring依赖注入
  8. linux基础知识3
  9. 从人脸识别到内容审核,百度硬核AI技术推荐!
  10. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
  11. 【LCS】POJ1458Common Subsequence
  12. 微机原理交通灯控制系统设计
  13. 在Windows server中如何安装SQL Server 2008
  14. JavaWeb-文件上传和下载
  15. iftop流量实时查看
  16. 一元多项式的相加和相减操作(链表)
  17. ES 中时间日期类型 “yyyy-MM-dd HH:mm:ss” 的完全避坑指南
  18. ZOOM join meeting提示密码错误
  19. 给孩子简单快乐的童年
  20. 【06月05日】A股滚动市净率PB历史新低排名

热门文章

  1. MATLAB可视化实战系列(二十四)-三维可视化如何利用圆锥图显示向量场?
  2. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
  3. 自然语言处理NLP,如何使用AMBERT算法建立多粒度token预训练语言模型
  4. MATLAB实现牛顿插值的源程序
  5. 细数二十世纪最伟大的十大算法
  6. 飞鸽 bind()错误=10048
  7. 悲观锁和乐观锁_乐观锁和悲观锁 以及 乐观锁的一种实现方式-CAS
  8. Python入门100题 | 第052题
  9. LeetCode-动态规划基础题-343. 整数拆分
  10. Python编程基础:第四十八节 对象作为参数Objects as Argument