python的全局变量能暂存数据吗_Python 中的全局变量 局部变量
全局变量和局部变量
命名空间
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 中的全局变量 局部变量相关推荐
- python的全局变量能暂存数据吗_【Python】Python之全局变量
最近的两个Python项目由于使用多线程的缘故,需要频繁用到全局变量.在Tcl/tk中可以使用命名空间的形式限制全局变量的引用范围.但是在Python中似乎没有看到类似的定义.在网上看了看关于 ...
- python中全局变量的定义及调用_python中定义全局变量
python中怎么定义全局变量 python中在哪些情况下必须使用global来声明全局变量 python class里面的全局变量问题 python中的本地变量(local variable)和全局 ...
- python中int数据范围_Python中int的取值范围是多少
Python中int的取值范围是多少 发布时间:2020-10-30 09:33:50 来源:亿速云 阅读:66 作者:小新 这篇文章将为大家详细讲解有关Python中int的取值范围是多少,小编觉得 ...
- python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化
使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...
- bootstraptable中responsehandle获取数据缺失_Python中的向量化字符串操作
Python的一个使用优势是它在处理和操作字符串数据方面相对容易. 在此基础上Pandas提供了一套全面的向量化字符串操作(vectorized string operation),这些操作成为处理现 ...
- angular中如何定义全局变量_如何在Angular 2 / Typescript中声明全局变量?
这是最简单的解决方案,Service没有/ 也没有Observer: 将全局变量放在文件中,然后导出它们. // // ===== File globals.ts // 'use strict'; e ...
- C语言全局变量(c文件和h文件中的全局变量、静态全局变量)使用注意事项
C语言在头文件中包含全局变量有三种形式: 1 在头文件中声明一个全局变量,在一个C文件中定义全局变量,然后在所有的引用了这个头文件的C文件里都可以使用该全局变量值. 如在main.c定义 int a ...
- js定义全局变量 vue页面_在vue项目中 实现定义全局变量 全局函数操作
写在前面: 如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数,这两个设置不太难,而且有一 ...
- 传智教育 | Java教程:feature分支开发到一半时切换到bugfix分支,如何暂存数据?
1.解决思路 在工作过程中,当你正在当前feature分支上进行功能的开发,突然来了一个bug,要创建一个bugfix修复分支进行修复.但是当前feature分支你只开发了一半,显然你去提当前的半 ...
最新文章
- Jenkins plugin
- 写入usb设备 linux 程序,模拟物理USB设备Linux
- 联合查询是要多创建一个实体类么_[译] 如何用 Room 处理一对一,一对多,多对多关系?...
- 如何用C语言编写PHP扩展的详解
- ObjectArx开发对txt文本文件的操作一例
- 【数据库bug修复】——Authentication plugin ‘caching_sha2_password‘ is not supported
- diy实现spring依赖注入
- linux基础知识3
- 从人脸识别到内容审核,百度硬核AI技术推荐!
- 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
- 【LCS】POJ1458Common Subsequence
- 微机原理交通灯控制系统设计
- 在Windows server中如何安装SQL Server 2008
- JavaWeb-文件上传和下载
- iftop流量实时查看
- 一元多项式的相加和相减操作(链表)
- ES 中时间日期类型 “yyyy-MM-dd HH:mm:ss” 的完全避坑指南
- ZOOM join meeting提示密码错误
- 给孩子简单快乐的童年
- 【06月05日】A股滚动市净率PB历史新低排名
热门文章
- MATLAB可视化实战系列(二十四)-三维可视化如何利用圆锥图显示向量场?
- MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
- 自然语言处理NLP,如何使用AMBERT算法建立多粒度token预训练语言模型
- MATLAB实现牛顿插值的源程序
- 细数二十世纪最伟大的十大算法
- 飞鸽 bind()错误=10048
- 悲观锁和乐观锁_乐观锁和悲观锁 以及 乐观锁的一种实现方式-CAS
- Python入门100题 | 第052题
- LeetCode-动态规划基础题-343. 整数拆分
- Python编程基础:第四十八节 对象作为参数Objects as Argument