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__
列表中的对象)
我来自 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__
列表中的对象)