【问题标题】:How do variables inside python modules work?python模块中的变量如何工作?
【发布时间】:2015-09-07 12:47:33
【问题描述】:

我来自具有静态变量的 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 中存储字符串的可接受方式吗?

【问题讨论】:

  • 如果他们期望是static const,那很好。

标签: python module python-module


【解决方案1】:

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

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

from ... import * 导入模块时有两种解决方法:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      简而言之,是的,没关系。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 2020-05-03
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 2018-09-22
        相关资源
        最近更新 更多