在python中,整个文件可以只是一个变量吗?

在python中,整个文件可以只是一个变量吗?,python,file,variables,Python,File,Variables,我看到一个javascript项目在它们自己的文件中定义了非常大的变量,这些文件的名称与变量的名称相同,例如,名为marker的大型数组位于一个名为marker.js的文件中。该变量可以方便地直接用于任何导入,就像在同一个文件中一样直接访问它 现在我有一个python项目中的大变量,我想知道我是否可以做类似的事情,即将非常大的列表重构为自己的文件,或者这不可能/不是一个好主意 多谢各位 更新 我的“非常大的变量”基本上是我能提供的最详细的地理信息: location_map_br = {

我看到一个javascript项目在它们自己的文件中定义了非常大的变量,这些文件的名称与变量的名称相同,例如,名为marker的大型数组位于一个名为marker.js的文件中。该变量可以方便地直接用于任何导入,就像在同一个文件中一样直接访问它

现在我有一个python项目中的大变量,我想知道我是否可以做类似的事情,即将非常大的列表重构为自己的文件,或者这不可能/不是一个好主意

多谢各位

更新 我的“非常大的变量”基本上是我能提供的最详细的地理信息:

location_map_br = {
    1: {
        'name': 'São Paulo'.decode('utf-8'),
        'lat': -23.55,
        'long': -46.64,
        'radius': 294200,
        },
    2: {
        'name': 'Rio De Janeiro',
        'lat': -22.90,
        'long': -43.21,
        'radius': 294200,
        },


代码还可以,它只需要结构化,以便大变量避开应用程序逻辑

我不能完全确定你的问题,但这不是你的目的吗


示例:我有一些zipcode逻辑和一个包含实际zipcode的大型python数据结构:

zipproj/zipcodelogic.py
zipproj/zipcodes.py
其中
zipcodes.py
看起来像

zipcodes = [
    ('10304', 'Richmond County, NY'),
    ... 
    # and over 42,000 more zipcodes
    # http://en.wikipedia.org/wiki/ZIP_code#Statistics
    ...
]
zipcodelogic.py
中,您可以简单地
导入zipcodes
(列表的句柄是
zipcodes.zipcodes


在其他情况下,人们可能也会研究对象序列化,例如,via或。

我不完全确定您的问题,但这不是目的吗


示例:我有一些zipcode逻辑和一个包含实际zipcode的大型python数据结构:

zipproj/zipcodelogic.py
zipproj/zipcodes.py
其中
zipcodes.py
看起来像

zipcodes = [
    ('10304', 'Richmond County, NY'),
    ... 
    # and over 42,000 more zipcodes
    # http://en.wikipedia.org/wiki/ZIP_code#Statistics
    ...
]
zipcodelogic.py
中,您可以简单地
导入zipcodes
(列表的句柄是
zipcodes.zipcodes


在其他情况下,还可以研究对象序列化,例如,通过或。

这是一个非常好的主意,尤其是如果这些值是定义的常量或查找表

以下是我工作的一些代码中的查找表摘录(开源,所以我不会泄露任何秘密):

这个大的转换表保存在一个单独的文件中,只需根据需要导入即可,而不必把代码弄得乱七八糟

from library import DCOM_ERROR_CONSTANTS

这是一个非常好的主意,尤其是如果这些值是定义的常量或查找表

以下是我工作的一些代码中的查找表摘录(开源,所以我不会泄露任何秘密):

这个大的转换表保存在一个单独的文件中,只需根据需要导入即可,而不必把代码弄得乱七八糟

from library import DCOM_ERROR_CONSTANTS

我不是100%确定我完全理解你的要求

此外,我不知道这是否只是一个语言问题,但是您将您的值称为变量而不是常量,因此我想知道模块是否真的是您想要的[严格地说,在python中没有真正的常量。对于这个答案,我将其视为“常量”其值不变且在源代码中而不是在运行时分配的变量]

但是:在python中,获取变量持久性(=运行时分配的值)的标准方法是通过和模块。另一方面,模块是导入常量的标准方式,但为了防止名称空间污染,必须小心使用它们

例如,加载常量的标准方法如下所示:

from pygame.locals import *
这是可行的,但如果在您的模块中有其他导入(例如,如果在
pygame.locals
中,您从numpy import sum编写了
)导入
局部变量
时,文件中的
sum
定义为
numpy.sum
,而不是标准的
sum
内置函数。。。这被称为“名称空间污染”

为了避免这种情况,但仍然能够在源代码中导入
局部变量
,您可以定义模块变量
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>,该变量将在使用星形(
*


我不能100%确定我完全理解您的要求

此外,我不知道这是否只是一个语言问题,但是您将您的值称为变量而不是常量,因此我想知道模块是否真的是您想要的[严格地说,在python中没有真正的常量。对于这个答案,我将其视为“常量”其值不变且在源代码中而不是在运行时分配的变量]

但是:在python中,获取变量持久性(=运行时分配的值)的标准方法是通过和模块。另一方面,模块是导入常量的标准方式,但为了防止名称空间污染,必须小心使用它们

例如,加载常量的标准方法如下所示:

from pygame.locals import *
这是可行的,但如果在您的模块中有其他导入(例如,如果在
pygame.locals
中,您从numpy import sum编写了
)导入
局部变量
时,文件中的
sum
定义为
numpy.sum
,而不是标准的
sum
内置函数。。。这被称为“名称空间污染”

为了避免这种情况,但仍然能够在源代码中导入
局部变量
,您可以定义模块变量
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>,该变量将在使用星形(
*


当然这是个好主意,正如Miku和Paul已经解释过的那样,这是可能的。还有另一种选择,将数据存储在csv文件或xml中,但我认为只有当其他程序(不是用python编写的)必须直接访问该数据时,才值得这样做。

当然这是一个好主意,作为Mi