模块作为函数参数

时间:2014-02-04 01:03:01

标签: python module

我有一个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)))

这不起作用。想法?

2 个答案:

答案 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