Python全局变量跨模块变量定义和使用
在同一个py脚本中,定义在所有函数之外的变量可以理解为全局变量,因为所有函数可以直接访问函数外的变量(但不能访问其他函数的私有变量),这里涉及到变量的作用域,一般分为函数作用域和全局作用域,函数作用域包含在全局作用域中,子作用域可以访问全局作用域的变量,全局作用域不能访问子作用域的变量。
(一)定义和访问
python全局变量定义在函数外部,在全局包括函数内作用域都可以访问。
public_str = 'a'
def show():# 打印结果aprint(public_str)
show()
# 打印结果a
print(public_str)
(二)修改
全局变量的修改需要在修改前使用global
声明该变量为全局变量,如果不使用global
声明则python认为该变量为新定义的函数内局部变量。如果函数中既有访问又有修改,那么global
声明应该在访问之前。
public_str = 'a'
def show():global public_str# 打印结果aprint(public_str)public_str = 'b'
show()
# 打印结果b
print(public_str)
结论:引用全局变量,不需要
golbal
声明,修改全局变量,需要使用global
声明。列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global
声明。
二、跨模块全局变量
跨模块全局变量不局限于单个py脚本使用,在python程序中所有运行的模块函数都可以访问和修改。python单个py脚本可以理解为一个模块,在py脚本中可以import
加载使用多个模块,并且使用其中的函数功能。通过import
加载的模块如果需要共用一个变量,那么就需要定义跨模块全局变量。
python中一个脚本多次import
同一个模块,模块中的数据共用。例如a import b,c
,b import c
,a作为主程序加载b模块c模块,b模块中再加载c模块,因为都由主程序开始加载因此内存资源是共用的,a和b中的c我们可以理解为同一个c。因此我们在python如果需要使用跨模块全局变量,可以在单独模块中进行定义,然后在需要的模块中import加载即可访问及修改。
下面演示在公共模块config
中定义变量public_val
,在main
模块和app
模块使用和修改:
1.config.py
public_val = 888
2.main.py
import config, appprint(f'main config.public_val:{config.public_val}')
app.hello('world')def show():print(f'show config.public_val:{config.public_val}')
show()
2.app.py
import configdef hello(name):print(f'app.hello {name}')print(f'app.hello config.public_val:{config.public_val}')# 修改config模块中public_val变量config.public_val = 999
输出结果:
main config.public_val:888
app.hello world
app.hello config.public_val:888
show config.public_val:999
config.py
为变量定义的模块,在main.py
和app.py
中加载config.py
访问其中的public_val
变量。
Python全局变量跨模块变量定义和使用相关推荐
- python全局变量(模块法和global)
python全局变量(模块法和global) python中全局变量使用,一般有两种方法,使用global和使用模块 global 在python中,可以使用global声明一个变量为全局变量 1. ...
- 关于python中的模块的定义、使用、优点及其使用cpy文件的介绍 简单易懂
一 模块的定义及其使用规范 首先pycharm中每一个以.py结尾的python文件都是一个模块,并且模块就相当于一个工具包,当我们想使用这个工具包内的工具的时候,必须要用到import关键字来导入, ...
- python如何跨模块调用变量_Python跨模块用户定义的全局变量:在其他模块运行时调用它们的问题...
我对Python相当陌生,目前正在学习如何在Python程序中使用函数和多个模块.在 我有两个模块"Functions_Practice_Main"(运行菜单)和"Fun ...
- python全局变量 | 跨文件模块使用的一种实现方法
使用一个模块来专门管理全局变量,其他模块再通过导入该模块来间接对全局变量进行操作. 为了避免造成全局变量的赋值混乱,对于每一个全局变量,可以有多个模块读取该全局变量,但尽量只有一个模块用来对其进行赋值 ...
- python中模块是什么意思_Python中的模块是什么?3分钟搞懂Python中的模块问题
Python 中的模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,模块让你能够有逻辑地组织你的 Python 代码段.把相关的代码分配到一个模块里能 ...
- python全局变量定义_Python 3 实现定义跨模块的全局变量和使用
尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...
- [Python学习] 专题六.局部变量、全局变量global、导入模块变量
定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域.本文主要讲述全局变量.局部变量和导入模块变量的方法. 参考:<Python核心编程 (第二版)> 一 ...
- python 全局变量使用报错没有定义_Python变量作用域代码解析
本篇文章小编给大家分享一下Python变量作用域代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 特点 python的作用域是静态的,在源代码中 ...
- python定义全局变量 跨文件使用
参考:https://www.cnblogs.com/syw20170419/p/10872318.html 借鉴global 关键字的思路,既然在一个文件里面可以生效的话,那么我们就专门为全局变量定 ...
最新文章
- Linux初学(Linux命令行的使用)
- TypeScript基本数据类型
- 谁说格力不做手机了?格力折叠屏手机了解一下
- 易安卓与jaVa_E4A变量 · E4A易安卓中文开发教程-E4A社区 · 看云
- C++中menset用法
- yii2 提供接口给java_Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)...
- 配置centOS下的Python
- C语言 · 进制转换
- zhang 快速并行细化方法_Zhang快速并行细化算法.docx
- 使用yum安装java
- BTC公钥生成地址的过程详解
- Rar5.20 key
- 面试题目:2个鸡蛋100层楼问题
- border之border-style用法
- php 提取图片的特征,让机器“看见”:图像数据的特征提取方法
- 数字孪生概念股四方伟业抢滩IPO 依赖华为拓客应收账款暴增成隐忧
- 2021星巴克月饼全新上市;万豪旗下源宿品牌入驻中国东南区;现代汽车承诺到2045年实现碳中和 | 美通社头条...
- 如何在BPA600添加新的协议
- SpaceSniffer--你的专属文件嗅探器
- app性能测试:(一)启动时间
热门文章
- 游戏开发——向着目标出发
- Python中进程与线程的(详细)教程之进程
- 获巴菲特腾讯加持,拉美信用卡大王Nubank 凭啥值400亿美元?
- 用html些在线印章代码,懒人代码,常用网页代码全集
- gcc指定头文件搜索路径及动态链接库搜索路径
- 小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0
- JavaScript递归函数详解:如何使用递归及简单的递归案例
- 银河麒麟操作系统安装Mono开发环境操作步骤
- java多线程复习与巩固(四)
- FZU 2230 翻翻棋 (找规律 水题)