Python 中的跨模块共享变量

Python 中的跨模块共享变量

一、采用general import的方法

这方法也是官方文件中FAQ中给出的方法。

在单个程序中跨模块共享信息的规范方法是创建一个特殊模块(通常称为config或cfg)。 只需在应用程序的所有模块中导入配置模块;
然后该模块可用作全局名称。 因为每个模块只有一个实例,所以对模块对象所做的任何更改都会反映在任何地方。 例如:

config.py:

x = 0

mod.py:

import config
config.x = 1

main.py:

import config
import mod
print config.x

这种方法应该也是被大家所使用最多的一种方法。
这里一定要注意要用潜拷贝,不能直接Import *这种,要保持同样的空间名称。

二、采用import + whole init()的方法

这种方法也是首先定义一个文件
setting.py

def init():
	global x
	x = 0

然后,在子文件中import globals
subfile.py

import setting
def stuff():
	setting.x = 1

子文件中无需调用init(),调用是main文件的事:
main.py

import setting
import subfile

setting.init()
subfile.stuff()
print(setting.x)

这种方法,可以避免initialize全局变量多次。

三、builtins方法

Python3中事builtins,而Python2中是__builtins__
这种方法,官方也并不推荐。╮(╯▽╰)╭
如果你在builtins模块中添加了变量,那么,所有其他的模块有该方法的都会产生这个变量值,基本上所有模块都含有这个函数。
main.py:

import builtins
builtins.x = 1
import subfile

subfile.py

print(x)

这样也可以不用import,在所有其他的文件中就会都含有这个变量。

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值