在python 2.x中使用多个文件

时间:2018-06-05 10:43:45

标签: python pandas modularity

我是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的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

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

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

导入的部分内容

正确的方法是替换

from part1 import *
from part2 import *

使用

import part1
import part2

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

这将解决您获得的错误以及使用多个类似对象填充命名空间的错误做法(有时甚至会重叠)

评论者对你的代码的评论也是正确的,这里还有其他几个错误,它们不允许你运行任何东西,例如一些缩进问题和一个函数之外的return语句