Python:在模块和类之间共享全局变量

2023-12-11

我知道在 Python 中可以跨模块共享全局变量。然而,我想知道这在多大程度上是可能的以及为什么。例如,

全局mod.py

x = None

mid_access_mod.py

from global_mod import *

class delta:
    def __init__(self):
        print x

bot_modif_mod.py

import mid_access_mod
import global_mod

class mew:
    def __init__(self):
        global_mod.x = 5

def main():
    m = mew()
    d = mid_access_mod.delta()

即使所有模块都共享全局变量 x,这也会打印 None。为什么会这样呢?看起来 x 在 mid_access_mod.py 中被评估,然后由 mew() 在 bot_modif_mod.py 中分配。


发生这种情况是因为您使用的是不可变值(整数和 None),并且导入变量就像按值传递事物,而不是按引用传递事物。

如果您将 global_mod.x 设为一个列表,并操作其第一个元素,它将按您的预期工作。

当你这样做时from global_mod import x,您正在创建一个名称x在你的模块中具有相同的值x has in global_mod。对于函数和类之类的东西,这正如您所期望的那样,因为人们(通常)以后不会重新分配这些名称。

正如亚历克斯指出的,如果你使用import global_mod, 进而global_mod.x,你就会避免这个问题。您在模块中定义的名称将是global_mod,它始终引用您想要的模块,然后使用属性访问来获取x将为您提供最新的值x.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:在模块和类之间共享全局变量 的相关文章

  • 从Python中的字符串中提取货币金额

    我正在制作一个程序 从字符串中获取货币并将其转换为其他货币 例如 如果字符串是 the car cost me 13 250 我需要得到 and 13250 我已经有了这个正则表达式 1 确实如此 但是该字符串很有可能有多个价格 并且全部使
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • TF map_fn 或 while_loop 用于不同形状的张量列表

    我想处理不同形状的张量序列 列表 并输出另一个张量列表 考虑每个时间戳上具有不同隐藏状态大小的 RNN 就像是 输入 tf ones 1 2 2 tf ones 2 2 3 tf ones 3 2 1 输出 tf zeros 1 2 4 t
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • 如何将 self 传递给装饰器?

    我该如何通过self key下面进入装饰器 class CacheMix object def init self args kwargs super CacheMix self init args kwargs key func Cons
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 解析根元素内元素之间的 XML 文本

    我正在尝试用 Python 解析 XML 以下是 XML 结构的示例 a aaaa1 b bbbb b aaaa2 a
  • 检测 IDLE 的存在/如何判断 __file__ 是否未设置

    我有一个脚本需要使用 file 所以我了解到 IDLE 没有设置这个 有没有办法从我的脚本中检测到 IDLE 的存在 if file not in globals file is not set 如果你想做一些特别的事情 file 未设置
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X

随机推荐

  • C++ 单例初始化顺序

    I have class Foo class Bar 现在 我想要 Foo Foo singleton new Foo Bar Bar singleton new Bar 之前都初始化 int main 叫做 此外 我想要 Foo sing
  • 如何向 System.Type 添加元数据?

    我一直在研究一种语言 但就 NET 集成而言 到目前为止我只设法让原始类型发挥作用 昨晚我有了一个好主意 而不是试图弄清楚到底是什么System Type对于元组 模块和函数应该在类型检查期间 我可以做的是获取System Type of
  • 如何在shell脚本中向变量追加值

    我从属性中获取变量值 并且可以在 sh 文件中访问 但我无法向该变量附加另一个值 请建议 echo Build ID from properties BUILD ID Build ID from properties abcd v6 c1
  • 需要使图像从底到角:React Native

    I want to make image rounded from bottom of it Here is what I wanted to make 我尝试过设置边界半径 但它将适用于整个图像而不是底部 这是我的代码
  • 在 R 中重塑而不进行聚合(例如 MTurk 响应字符串)

    通常 我会为此使用一个非常基本的从长到宽的重塑 但它似乎正在删除我的聚合变量 设置是我在 Mechanical Turk 上有一项工作 我一式三份执行 我希望 MTurk1 Mturk2 MTurk3 的答案成为数据框中它们自己的变量 但由
  • iOS 6 中仅横向使用 CCLayer 的 Cocos2d 中的游戏中心身份验证

    我遇到的问题似乎是一个相当常见的问题 但我的解决方案的搜索和实现尚未成功 我构建了一个 Cocos2d 游戏 该游戏仅供横向使用 但需要访问 Gamecenter Gamecenter 正在运行 启用了纵向模式 但它也允许游戏切换到纵向模式
  • 如何在 Inno Setup 中延迟而不冻结

    您好 我想知道如何在 Inno Setup Pascal Script 中将工作 或命令 延迟指定时间 内置的Sleep const Milliseconds LongInt 睡觉时冻结所有工作 我实现的以下功能也使WizardForm无响
  • 非静态类如何调用另一个非静态类的方法?

    我有两个非静态类 我需要访问一个类上的方法以返回一个对象进行处理 但由于这两个类都是非静态的 我不能只以静态方式调用该方法 我也不能以非静态方式调用该方法 因为程序不知道对象的标识符 在任何事情之前 如果可能的话 我希望这两个对象都保持非静
  • 具有多个并发读取器且无写入器的 Dictionary 的线程安全性

    如果我初始化一个通用字典一次 并且不允许进一步添加 更新 删除 那么让多个线程在没有锁定的情况下从中读取是否安全 假设字典在读取器启动之前已初始化 非通用哈希表的帮助中有一条注释说它对于多个读者来说是安全的 但我没有看到通用字典的类似内容
  • 反应状态行为

    所以 最近我开始了一个新项目 我只使用功能组件 不确定这是否是此问题的相关声明 我已经初始化了一个这样的状态变量 const selectedFields setSelectedFields useState 在下面的函数中 我更新状态 l
  • 使用 awk 保持文件 1 中的行与文件 2 中的值匹配

    主文件的内容 cat Sort File2 csv SR 2017 09 01 00 19 13 05 30 1A3LA7015L5O 5042449534546015801549 SR 2017 09 01 00 19 13 05 30
  • 使用data.table在每组数据之前插入一行

    这也许是个愚蠢的问题 但我想在每组数据之前插入一个角色 我在网上能找到的只是如何在每个组后插入一行 此外 插入的行将有一个代表每个 ID 的序列号 例如 我有一个像这样的数据表 df ID TIME VAR VALUE 101 07 02
  • 如何以一致的方式从左到右、从上到下对轮廓进行排序

    我正在研究一个从图像中提取矩形框并按顺序对这些矩形框进行排序的问题 我尝试过的代码是 import cv2 import matplotlib pyplot as plt Load image grayscale adaptive thre
  • 在 Angular 2 组件模板中嵌入小部件

    我的一个组件模板需要有一个小部件https www tradingview com widget 它们提供了我们可以嵌入的脚本标签 但由于 Angular 2 从组件模板中删除了脚本标签 因此嵌入这些类型的小部件应该是最好的 我相信你会做这
  • UWP 应用安装程序自动更新无法正常工作

    我正在尝试从远程源自动更新我的 UWP 应用程序 为此我关注了这两个博客处理 sideloaded uwp and desktop bridge apps 的自动更新 创建应用安装程序文件 vsMSDN 的 我在版本 1803 操作系统内部
  • 可可得到一周的第一天

    如何获取约会一周的第一天 这似乎更容易 因为 当一周从星期日开始时 我需要取回星期日日期 如果从星期一开始 我需要获取星期一的日期 输入日期是一周内的任何日期 我尝试了几种方法 但边缘情况使其变得困难 我做了一个函数 但它不能 100 工作
  • Android 实时 Google 地图位置跟踪

    我正在开发一款 Android 应用程序 玩家可以根据自己的位置在手机上实时战斗 在 Google 地图上 您可以通过一个小蓝点看到您所在的位置 面向的方向以及正在移动的位置 我的问题是 如何将类似的东西集成到我的应用程序中 以便当玩家移动
  • Python:如何使用 Python 访问 mp3 文件的元数据? [复制]

    这个问题在这里已经有答案了 假设我想看看艺术家的名字 或者添加BPM信息 我可以使用哪些 Python 工具来完成此任务 有一个模块叫Python ID3正是这样做的 如果您使用的是 Debian Ubuntu 机器 则其软件包名称为pyt
  • 如何在Spring Data中进行Mongo聚合查询?

    这是我第一次在 Java 中使用 Mongo 这个聚合查询遇到了一些问题 我可以在 Mongo for Spring 中执行一些简单的查询 Query我的存储库接口中的注释扩展了MongoRepository
  • Python:在模块和类之间共享全局变量

    我知道在 Python 中可以跨模块共享全局变量 然而 我想知道这在多大程度上是可能的以及为什么 例如 全局mod py x None mid access mod py from global mod import class delta