python 模块中的变量如何工作?

How do variables inside python modules work?

我来自 Java 静态变量背景,我正试图在我的 python 应用程序中创建一个常用字符串列表。我知道 python 中没有静态变量,所以我写了一个模块如下:

import os

APP_NAME = 'Window Logger'
APP_DATA_FOLDER_PATH = os.path.abspath(os.environ['APPDATA'])+'\%s' % APP_NAME
CURRENT_SESSION_NAME = 'session_1'
CURRENT_SESSION_XML_PATH = APP_DATA_FOLDER_PATH + '\%s%s' % (CURRENT_SESSION_NAME, '.xml')

这是在 python 中存储字符串的可接受方式吗?

您可以将配置与程序本身分开。查看:http://wiki.python.org/moin/ConfigParserShootout

如果需要定义一个静态的常量,应该在模块级别完成,所有大写字母用下划线分隔,如下:

https://www.python.org/dev/peps/pep-0008/#constants

总之,是的,没关系。

Pep8 为 Python 代码推荐了样式和约定,我强烈建议您遵循。

惯例是将模块中的常量声明为大写的变量(Python 风格指南:https://www.python.org/dev/peps/pep-0008/#global-variable-names)。

但是没有办法阻止其他人在导入模块时重新声明这样的变量——因此忽略约定。

通过 from ... import * 导入模块时,有两种解决此问题的方法:

  • 为不应导出的常量使用以下划线开头的名称
  • 定义一个列表 __all__ 应该是 public 的常量和函数(因此排除所有未包含在 __all__ 列表中的对象)