从另一个 .py 文件导入变量

Import variables from another .py file

我正在学习 python 编程,但我被困在一些可能非常基础但无法解决的问题上。 我的问题是:我在目录中有一个名为“Downloading_The_Data”的 .py 文件。该文件包含一些变量,如“HOUSING_PATH”等。现在,我在同一目录中有另一个 .py 文件,我想将另一个文件导入其中。我只是写了“import DOWNLOADING_THE_DATA”,一切正常,除非我尝试使用似乎未导入的变量“HOUSING_PATH”。代码:

“DOWNLOADING_THE_DATA”文件:

import os
import tarfile
import urllib

DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml/master/"
HOUSING_PATH = os.path.join("datasets" , "housing")
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"

def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
    if not os.path.isdir(housing_path):
        os.makedirs(housing_path)
    tgz_path = os.path.join(housing_path, "housing.tgz")
    urllib.request.urlretrieve(housing_url, tgz_path)
    housing_tgz = tarfile.open(tgz_path)
    housing_tgz.extractall(path=housing_path)
    housing_tgz.close()

新的 python 文件是:

import pandas as pd
import Downloading_The_Data

def load_housing_data(housing_path=HOUSING_PATH):
    csv_path = os.path.join(housing_path , "housing.csv")
    return pd.read_csv(csv_path)

错误是:NameError: name 'HOUSING_PATH' is not defined

我想我可以只导入 'DOWNLOADING_THE_DATA' 文件,所有在其中声明的变量都会被导入,这样我就可以使用它了。因此,我的问题简单明了:哪里出了问题,我该如何解决?

编辑:只是一个免责声明:我知道我可以在一个文件中使用所有内容,只需调用 pandas 和所有内容并将 csv 加载到同一个笔记本中,但这是我正在做的练习我。我知道有一天我需要导入其他文件及其变量和东西,所以我只是想从头开始做。

它就像所有其他 Python 模块一样。

def load_housing_data(housing_path=Downloading_The_Data.HOUSING_PATH):

如果你真的讨厌所有的打字,你可以这样做:

from Downloading_The_Data import *

您应该像这样使用另一个 python 文件中的任何定义:

import module
module.variable = 5
module.class()
module.function()

或者您可以这样做:

from module import variable, class, function
variable = 5
class()
function()

from module import * 不是好的做法。 如果你不喜欢打字,你可以给另一个名字:

from module import variable as var
var = 5