我已经编写了一些代码,但它们都位于一个文件中。现在工作很烦人,因为它太长了。所以我想我应该将所有功能放在不同的文件中,然后导入它们。我只是不确定这样做的最佳方式。
当前代码:
import glob, os
import csv as csv
import pandas as pd
import numpy as np
import sys
def create_list(var):
stuff
def store_table(var):
stuff
def geo_info(var):
stuff
def factor_loads(var):
stuff
def add_loads(var):
stuff
def calc_bypass_stress(var):
a lot of stuff
def calcloads(var):
tons of stuff and calls other functions above
for i in list:
for k in another_list:
calcloads(var)
我认为我可以将其拆分,以便查找和创建表格的函数位于tables.py
;计算内容的任何内容都在calc_stuff.py
中,我从thehead.py
运行所有内容:
tables.py
def create_list(var):
stuff
def store_table(var):
stuff
def geo_info(var):
stuff
def factor_loads(var):
stuff
def add_loads(var):
stuff
calc_stuff.py
def calc_bypass_stress(var):
a lot of stuff
def calcloads(var):
tons of stuff and calls other functions above
thehead.py
import glob, os
import csv as csv
import pandas as pd
import numpy as np
import sys
from tables import *
from calc_stuff import *
for i in list:
for k in another_list:
calcloads(var)
有些问题:
1)这会起作用吗?
2)我的几乎所有函数都使用Pandas,Numpy等的东西。我是否需要在每个.py文件中导入这些包?或者只是在thehead.py
?
3)从thehead.py
我调用位于calcloads
的函数calc_stuff.py
),该函数使用tables.py
中的函数。我是否应该将所有功能保存在一个文件中,而不是将功能分成不同的文件?
答案 0 :(得分:2)
答案 1 :(得分:2)
我认为@tjohnson的答案很棒。我只想在问题3中添加一些内容。听起来你已经编写了很多函数,并且你试图通过放置不在" active development"之外的函数来使你的代码/文件更易于管理。进入某种图书馆。在这种情况下,是的,将函数存储在一组单独的文件中不是问题。但是,通过" flat比嵌套"更好。原则上,它可以提高查找的容易度,将它们全部放在一个非常长的.py
文件中,然后在该文件的注释中放入一个目录,或者在导入后立即打印目录。
获取目录的一种快速而简单的方法如下。假设您的长文件名为mymod1.py
。然后你可以写:
编辑简化:(使用来自@kojiro here的想法)
from mymod1 import *
import mymod1 # to get it in the namespace
def my_toc(module):
exclude = ['date','pprint'] # list of callables imported via `from foo import bar`
for item in dir(module):
if (item not in exclude and
callable(getattr(module, item, locals().get(item)))):
print(item)
my_toc(mymod1)
输出:
myfunc_1
myfunc_2
myfunc_3 # etc