我是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的正确方法是什么?
答案 0 :(得分:0)
您根本没有导入名称part1(只是其中的所有内容),但您可能仍在代码中的某处使用它,这就是您收到错误的原因。
查看您的part1.py
和part2.py
文件,它们非常相似并且具有相同的变量名称...所以从part2
导入所有内容可能是错误的它只会覆盖您刚从part1
正确的方法是替换
from part1 import *
from part2 import *
使用
import part1
import part2
并相应地使用他们的变量,例如part1.actual_date
或part2.actual_date
这将解决您获得的错误以及使用多个类似对象填充命名空间的错误做法(有时甚至会重叠)
评论者对你的代码的评论也是正确的,这里还有其他几个错误,它们不允许你运行任何东西,例如一些缩进问题和一个函数之外的return
语句