python跨文件之全局变量
Python中的global关键字,你了解吗? - 知乎 (zhihu.com) global 关键字
python跟C不一样,c是在一个文件定义后在另一个文件声明下是extern变量就好。python则是通过global声明,但作用域依旧是单个文件。
有一种方式是在A定义,在B import。这种方式,如果仅存在B import A ,那没问题。但是如果A又存在import B则会报错,原因是出现循环调用。解决办法也有几种,这里不展开。这种方式,有一个问题,就是无法实时传递变量,B import后,A中发生了变化,B是不知道的。
于是乎,不如单独拿一个py文件来单独存放这些全局变量,其他文件都可以单向import。百度了下,别人也是这么做的,这里贴一下代码:
单独搞一个global_var.py如下
def _init(): # 初始化
global _global_dict
_global_dict = {} def set_value(key, value):
#定义一个全局变量
_global_dict[key] = value def get_value(key):
#获得一个全局变量,不存在则提示读取对应变量失败
try:
return _global_dict[key]
except:
print('读取'+key+'失败\r\n')
其他文件需要用到的,则import global_var.py。然后在主文件初始化一下,global_var._init()
接着便可以随便使用了,比如先定义(定义字典的时候顺便写入初始值):
import global_var.py
global_var._init()
global_var.set_value('file_dir', '')
global_var.set_value('str_buf','')
global_var.set_value('stop_flag',stop_flag)
global_var.set_value('input_step',input_step)
global_var.set_value('input_speed',input_speed)


使用的时候,直接get下字典对应键值
input_step = global_var.get_value('input_step')
input_speed = global_var.get_value('input_speed')

另外,如果是多线程,可能会出现一个线程写入这个变量,另一个线程又在读取,从可靠性的角度考虑,多线程时读写最好加个锁同步一下
python跨文件之全局变量的更多相关文章
- Python跨文件全局变量的使用
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...
- Python 跨模块使用全局变量(自定义类型)
gol.py def _init():#初始化 global _global_dict _global_dict = {} def set_value(key,value): "" ...
- Python 3 实现定义跨模块的全局变量和使用
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...
- python2.7 跨文件全局变量的方法
有关python实现跨文件全局变量的方法. 在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况.文件1:globalvar.py #!/usr/bin/env pyt ...
- python2.7 跨文件全局变量的方法-乾颐堂
在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况. 文件1:globalvar.py 1 2 3 4 5 6 7 8 9 10 11 12 #!/usr/bin/e ...
- c++多个文件中共用一个全局变量 变量跨文件使用
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12047602.html 虽然很多博客都写过这个了 但是 我还是继续补充的详细一点吧 毕竟很多 ...
- c语言函数定义、函数声明、函数调用以及extern跨文件的变量引用
1.如果没有定义,只有声明和调用:编译时会报连接错误.undefined reference to `func_in_a'2.如果没有声明,只有定义和调用:编译时一般会报警告,极少数情况下不会报警告. ...
- Python基础--文件操作和集合
这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 我们哭了 ...
- 【python】r+,w+ 全局变量
来源:http://www.educity.cn/wenda/352188.html r+:可读可写,若文件不存在,报错w+: 可读可写,若文件不存在,创建文本模式:遇换行符时根据操作系统不同自动转换 ...
- day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...
随机推荐
- wpf TreeView右键选中节点弹菜单
<TreeView x:Name="CustomTreeView" Canvas.Top="1" Canvas.Bottom="1" ...
- ISTQB软件测试初级认证模拟题
参考地址 http://www.docin.com/p-297467364.html 第一章:软件测试基础(18%) 1.学习目标 1.1 为什么需要软件测试? (K2) ① 通过具体的例子,来描述软 ...
- UCF Local Programming Contest 2018 C. First Last Sorting 思维、简单DP
C. First Last Sorting链接:https://nanti.jisuanke.com/t/44141
- 使用骨架创建maven的web工程 maven工程servlet实例之间指定web资源包 实例之导入项目依赖的jar包 maven工程servlet实例之jar包冲突解决
使用骨架创建maven的web工程 操作一样把勾进行勾选找到webapp选项 下一步创建就行 创建好会有显示 目录结构其余的都需要自己手动补齐 有小蓝点的才是一个web项目, 如果上面都正确的话没有 ...
- 其他2-while+read按行读取文件
一.三种方法 1.exec读取文件 exec <file sum=0 while read line do cmd done 2. cat读取文件 cat file|while read lin ...
- Angular前端调用asp.net core web api后端,报跨域问题
在 ASP.NET Core 中启用跨域请求 (CORS) https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnet ...
- Go的目录及其含义
运行 go env 找到go的运行目录,可以看到下边有三个文件: bin存放编译后的可执行文件(go install 自动创建),pkg存放编译后的包文件(go install 自动创建),src存放 ...
- 解决vuex“状态管理声明输错”后报错为:"Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_1_vuex__.a.store is not a constructor"
//Vuex index.js 源码 import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); import actions fro ...
- UNIT FIVE TO EIGHT
内存单元间接表示 mov dl, [0] :直接寻址 mov bx, 0mov dl, [bx]:间接寻址 loop指令 1.语法 loop 标号 2.CPU执行指令过程 ① (cx) ← (cx) ...
- Python基础数据类型-Dictionary(字典)
# -- coding: utf-8 -- # @time : 2022/7/19 21:51 # @file : 10pytest基本数据类型-dic.py # @software: pycharm ...