我有一个python脚本,首先导入一个包含数据的python模块。下面给出了一个非常简单的例子:
my_data1.py
bar = 10
baz = [1, 5, 7]
...
my_func.py
from my_data1 import *
def foo():
'''
function that uses the things defined in data (scalar, list, dicts, etc.)
in my_data
'''
return [bar] + baz
这适用于一组数据;但是,我有my_data1.py
,...,my_data36.py
。
my_data36.py
bar = 31
baz = [-1, 58, 8]
...
我要导入然后使用该数据运行foo()
。我想做这样的事情:
def foo(my_data):
from my_data import *
results = []
for i in range(1,37):
results.append(foo('my_data{}'.format(i)))
这不起作用。想法?
答案 0 :(得分:2)
使用__import__
。它需要一个字符串作为标识要导入的模块的参数,并返回该模块,然后您可以将该模块作为参数传递给您的函数。
def processDataSet (module):
print (module.baz)
for m in ['data1.py', 'data2.py', 'data69.py']:
processDataSet (__import__ (m) )
答案 1 :(得分:1)
“来自模块导入*在函数定义中无效。”来自http://docs.python.org/2/howto/doanddont.html#inside-function-definitions