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

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')

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

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

  1. python矩阵定义_python矩阵定义

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python的numpy创造矩阵from numpy import matimp ...

  2. python矩阵定义_python定义矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 假如有俩个矩阵score,score1 save('score.mat','sc ...

  3. python 宏定义_python Debug宏定义

    前言 调试python时,常碰到打印信息需手动删除:且python没有宏定义. 依据之前使用C的习惯,定义调试模式,仅调试模式下才打印调试信息. 步骤: 1.增添const.py # -*- codi ...

  4. python关键字定义_python 关键字与含义

    False --–布尔类型的值,表示假,与 True 相反  None --–None 比较特殊,表示什么也没有,它有自己的数据类型 - NoneType.  True ---布尔类型的值,表示真,与 ...

  5. python异常包_python异常处理与导入模块与导入包

    一.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Py ...

  6. python logging使用_Python实战之logging模块使用详解

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...

  7. python paramiko并发_python学习笔记9--paramiko模块、多线程、锁机制

    一.paramiko模块 paramiko模块是一个遵循ssh2协议的python扩展模块,该模块可以允许使用python通过ssh协议去远程管理主机.在使用该模块前,需要手动安装,具体安装过程请百度 ...

  8. python数组定义_python定义数组

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.一维数组 1. 直接定义matrix=2. 间接定义matrix=print ...

  9. python自定义随机数_python:numpy.random模块生成随机数

    简介 所谓生成随机数,即按照某种概率分布,从给定的区间内随机选取一个数.常用的分布有:均匀分布(uniform distribution),正态分布(normal distribution),泊松分布 ...

最新文章

  1. 跨域解决方案(史上最易懂)
  2. 在python中、下列代码的输出是什么-python面试题详细总结(附答案)
  3. HDU1716(全排列)
  4. 实验二初入linux,实验二:熟悉Linux的环境
  5. javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
  6. SpringBoot 统一异常处理 ControllerAdvice
  7. AIX 添加开机启动项
  8. spring注解配置quartz
  9. PHP中输出本地时间
  10. linux怎样自制库_苹果开源Swift System,增加Linux支持
  11. 如何高度自适应_精准放疗:TOMO如何做到自适应放疗?
  12. 电脑配置知识_电脑小知识:装机不求人!10 分钟电脑配置挑选速成攻略|硬盘|电脑|cpu|装机|固态硬盘|机械硬盘...
  13. 基于java小区物业管理系统
  14. 555定时器与频率测量
  15. linux如何安装压缩软件,linux之安装软件,压缩解压文件
  16. 计算机系统管理规程考试题,计算机基础考试卷试题及标准答案.docx
  17. Django 对符合条件的字段求和 aggregate
  18. Linux 批量修改文件名(前缀或后缀)
  19. 2023年第一砖——IT市场的变和不变
  20. gitlab云盘定时自动备份,gitlab服务器迁移、还原恢复

热门文章

  1. 2017年第十一届中国电子产业品牌盛会盛大开启
  2. Android -- 再来一发Intent
  3. Hibernate介绍
  4. 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(3)
  5. linux 进程(二) --- 进程的创建及相关api
  6. ylbtech-数据库设计与优化-对作为复选框/单选列表的集合表的设计
  7. 自己喜欢的shell终端配置
  8. 14条最佳JS代码编写技巧
  9. U盘安装Windows 7 方法
  10. CSP认证201604-2 俄罗斯方块[C++题解]:模拟、枚举