第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > python全局变量定义_Python 3 实现定义跨模块的全局变量和使用

python全局变量定义_Python 3 实现定义跨模块的全局变量和使用

时间:2023-10-31 21:58:31

相关推荐

python全局变量定义_Python 3 实现定义跨模块的全局变量和使用

尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖。

Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量:

我们知道Python使用变量的时候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定义(var x; var y=2;var z='222'),这样的话,在函数内部就无法操作外部的变量了,因为它总会认为你是在定义一个新变量并且赋值,不过 global 就可以解决这个问题。

global 的基础用法 :

x = 6

def func(): global x #定义外部的x

x = 1 func() print (x) #输出1

** 这个时候,即使你在另外一个py文件 再次使用 **global x 也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错 未定义。

那么我们怎么办?

借鉴global 关键字的思路,既然在一个文件里面可以生效的话,那么我们就专门为全局变量定义一个“全局变量管理模块”就好了

具体代码:globalvar.py

# -*- coding: utf-8 -*-

def _init():

#初始化global _global_dict

_global_dict = {}

def set_value(key,value):

""" 定义一个全局变量 """

_global_dict[key] = value

def get_value(key,defValue=None):

""" 获得一个全局变量,不存在则返回默认值 """

try:

return _global_dict[key]

except KeyError:

return defValue

相信如果你看懂了就应该知道思路了,利用global的单独文件全局性,从而可以定义在一个文件中的全局变量,然后这个单个文件的全局变量可以保存多个文件的共同全局变量

操作的时候,以Key对Value 的方法操作,我相信大家都懂。

# -*- coding:utf-8 -*-

import globalvar as gol

gol._init()#先必须在主模块初始化(只在Main模块需要一次即可)

#定义跨模块全局变量

gol.set_value('CODE','UTF-8')

gol.set_value('PORT',80)

gol.set_value('HOST','127.0.0.1')

然后其他的任何文件只需要导入即可使用:

# -*- coding: utf-8 -*-

import globalvar as gol #不需要再初始化了

ROOT = gol.get_value('ROOT',80)

CODE = gol.get_value('CODE')

说你懂得生之微末,我便做了这壮大与你看,你说再热闹也终需离散,我便做了这一辈子与你看,你说冷暖自知,我便做了这冬花夏雪与你看,你说恋恋旧日好时光,我便做了这描金绣凤的浮世绘与你看。你说应愁高处不胜寒,我便拱手河山,讨你欢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。