在 python 2.x 中处理多个文件

Working with multiple files in python 2.x

我是 python 的新手,我正在编写一个又长又复杂的程序。 为了更好的管理,我想分离代码并在主 app.py 中调用变量和函数,我将经常 运行。

考虑到以下两个文件,如何将函数和变量正确导入app.py?

part1.py:

   import pytz
    import json
    import pandas as pd
    import numpy as np

    actual_date = run (...)

    def sqlquery():
        query = """  ..."""
        df = run_query(query)
        return df

    def calcuations():
        df = sqlquery()
        cat_age = df[.....]
        mouse_name = df[.....]
        ....

        if cat>=10:
            color = "good"
            else:
            color = "bad"

    return calcuations()

part2.py:

import pytz
import json
import pandas as pd
import numpy as np

actual_date = run (...)

def sqlquery2():
    query = """  ..."""
    df = run_query(query)
    return df

def calcuations2():
    df = sqlquery()
    cow_age = df[.....]
    horse_name = df[.....]
    ....

    if cow_age>=10:
        color = "good"
        else:
        color = "bad"

return calcuations2()

在 app.py 中,我想调用所有变量并创建一个 json: 我尝试使用 from part1 import * 但出现错误:NameError: name 'part1' is not defined 这是app.py

import pytz
import json
import pandas as pd
import numpy as np
from part1 import *
from part2 import *

def json():

    data_out = {}
    data['animal_age'] = {}
    data['animal_age']['cat'] = cat_age
                .....

    data_out = json.dumps(data_out)
    return data_out

将所有变量和函数导入 app.py 的正确方法是什么?

您根本没有导入名称 part1(只是其中的所有内容),但您可能仍在代码中的某处使用它,这就是您收到错误的原因。

查看您的 part1.pypart2.py 文件,它们非常相似并且具有相同的变量名...所以从 part2 导入所有内容可能是错误的覆盖您刚刚从 part1

导入的部分内容

正确的做法是替换

from part1 import *
from part2 import *

import part1
import part2

并相应地使用它们的变量,例如 part1.actual_datepart2.actual_date

这将解决您遇到的错误以及用多个相似对象(有时甚至重叠)填充命名空间的不良做法

此外,评论者对您的代码的评论是正确的,这里还有其他几个错误不允许您 运行 任何事情,例如一些缩进问题和 return 声明之外一个函数