我可以使用 __init__.py 定义全局变量吗?

2023-12-10

我想定义一个在包的所有子模块中都可用的常量。我以为最好的地方是在__init__.py根包的文件。但我不知道该怎么做。假设我有几个子包,每个子包都有几个模块。如何从这些模块访问该变量?

当然,如果这是完全错误的,并且有更好的选择,我想知道。


你应该能够把它们放进去__init__.py。这一直都是这样做的。

mypackage/__init__.py:

MY_CONSTANT = 42

mypackage/mymodule.py:

from mypackage import MY_CONSTANT
print "my constant is", MY_CONSTANT

然后,导入 mymodule:

>>> from mypackage import mymodule
my constant is 42

不过,如果您确实有常量,那么将它们放在单独的模块(constants.py、config.py、...)中是合理的(可能是最佳实践),然后如果您希望它们位于包命名空间中,请导入他们。

mypackage/__init__.py:

from mypackage.constants import *

尽管如此,这并不会自动将常量包含在包模块的命名空间中。包中的每个模块仍然必须显式导入常量mypackage或来自mypackage.constants.

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

我可以使用 __init__.py 定义全局变量吗? 的相关文章

随机推荐

  • 设置从包含注释的 json 加载的对象的属性值

    当从 json 文件加载对象时 通常可以设置属性值并将文件写回 如下所示 manifest gc manifestPath ConvertFrom Json AsHashtable manifest name manifest name s
  • 在 DatePIcker 中设置 MinDate 和 MaxDate

    创建应用程序 其中我显示 DatePicker 现在我想设置 DatePicker 的 MinDate 是前两年 最大日期仅是未来两年 选择应基于当前日期 假设当前日期是 23 11 2016 因此 datepicker 应显示日期直到 2
  • iPhone 无法通过 WiFi 连接到本地 HTTP 服务器

    使用以下命令时 我无法打开在 iPhone 6s iOS 9 2 中的 MacBook 上运行的 HTTP 服务器提供的静态 HTML 页面 无论是在 Safari 还是 Chrome 浏览器中 http ipNumberOfMyServe
  • PHP 禁用输出缓冲

    我已经关掉了输出缓冲在 PHP 中通过设置output buffering off在 php int 中 但是当运行这样的简单代码时
  • 二维数组传递给函数

    我一直在读这个question但我无法获得解决问题的结果代码 我应该如何改变它才能使其发挥作用 void print2 int array int n int m main int array 4 1 2 3 4 5 6 7 8 int a
  • 使用通用参数执行远程通用 Powershell 脚本

    我需要编写一个 Powershell 脚本 我们称之为 控制器脚本 它能够调用传递通用参数的通用远程 Powershell 脚本 控制器脚本接受主机名 凭据 远程脚本路径和远程脚本参数 作为哈希表 作为参数 相反 远程脚本可以是接受任何字符
  • 有没有办法找出哪些STL头文件没有被直接包含?

    我们的产品使用C 作为编程语言 使用 C STL 的一个恼人的问题是我们忘记包含必要的头文件 因为该文件可能已包含在其他一些 STL 头文件中 构建会通过 例如 在使用Xcode的Mac平台上 如果我使用std auto ptr不包括mem
  • 如何实现自旋锁以避免阻塞

    考虑以下代码 Below block executed by thread t1 synchronized obj obj wait 0 This block executed by thread t2 synchronized obj o
  • FbChatBot 将消息标记为已读

    我正在开发 Facebook 聊天机器人 我想将消息标记为已读 这样当我们的 Facebook 页面的版主查看消息部分时 他们就不会看到那么多未读消息 即使 Facebook 聊天机器人已经回复了该用户他们不需要单击该消息只是将其标记为 已
  • 以编程方式禁用屏幕超时

    从这篇文章来看 Android 在应用程序运行时禁用屏幕超时 我可以通过禁用屏幕超时 getWindow addFlags WindowManager LayoutParams FLAG FULLSCREEN WindowManager L
  • 如何形成 dbPedia iSPARQL 查询(针对维基百科内容)

    假设我需要从维基百科获取有关所有山脉的内容 我的目标是显示初始段落和相应文章中的图像 例如罗莎山 and 文森特金字塔 我开始了解 dbpedia 并通过一些研究发现它直接提供对 wiki 数据库的实时查询 我有两个问题 1 我发现很难如何
  • memcpy 错误:分段错误(核心转储)

    我正在尝试使用 memcpy 和以下代码将一个字符串复制到 c 中的另一个字符串 include
  • 是否可以使用非特殊文件夹作为FolderBrowserDialog的根文件夹?

    FolderBrowserDialog RootFolder 属性仅限于中定义的特殊文件夹环境 特殊文件夹枚举器 然而 在我的应用程序中 我们需要显示此对话框 但根路径需要可配置 并且通常是自定义文件夹 与枚举器中的任何特殊文件夹无关 如何
  • 我可以将 NUnit 3 测试添加到 Visual Studio 2015 负载测试中吗?

    我有一个用 C 编写的测试自动化框架 其中单元测试用NUnit 不是MS测试 我创建了一个新的Visual Studio 负载测试配置 我希望能够将这些 NUnit 测试添加到负载测试中 但是 Visual Studio 2015 没有列出
  • PHP不会输出新行[重复]

    这个问题在这里已经有答案了 我已经尝试了在 PHP 中输 出换行符的所有方法 为什么以下不起作用 这应该在 hello 和 bar 之间输出换行符 但事实并非如此 我也尝试过 r n 而不是 n 如果您将其用作命令行脚本 那么这将起作用 我
  • 由 mysql 数据库填充的 UIscroll 单元格中的图像

    我被困在某处 我使用 PHP 动态地从 MYSQL 数据库中提取图像 直到我达到从 URL 检索照片名称的程度为止 一切都正常 我想在 UIScroll View 上动态插入缩略图 以便用户可以水平滚动以查看所有图像 照片描述 照片摘要 我
  • 使用 C# 在 VisualBrush 中设置图像运行时

    实际上我将设计时从资源中获取的图像设置为xaml像这样的文件
  • Android:如何:将现实世界的纬度和经度坐标绘制到不同角度的静态图像?

    我已经将纬度和经度坐标 当前 转换为像素坐标 然后我也成功地将电流绘制成静态图像 但问题是静态图像角度与现实世界地图不成比例 这是经纬度到像素的转换 感谢 Dan S 在这里回答将给定的纬度标记为静止图像 public final stat
  • 将参数从 java 程序传递到 bash 脚本,该脚本使用参数调用另一个 java 程序

    我想在我的 java 程序中执行 shell 脚本 传递如下所示的参数 Runtime getRuntime exec test sh param1 param2 param3 test sh 将调用另一个传递字符串参数的 java 程序
  • 我可以使用 __init__.py 定义全局变量吗?

    我想定义一个在包的所有子模块中都可用的常量 我以为最好的地方是在 init py根包的文件 但我不知道该怎么做 假设我有几个子包 每个子包都有几个模块 如何从这些模块访问该变量 当然 如果这是完全错误的 并且有更好的选择 我想知道 你应该能