来自未在python中导入的模块的函数

时间:2015-01-07 23:51:32

标签: python function module call

好伙伴们,

我有这种奇怪的行为。任何帮助,将不胜感激。

这是一个名为tankython的模块中的函数,它从一个名为usual的模块调用一个函数。但是,看起来Python拒绝识别该功能。这是代码

#tankython.py

from usual import * 
from get_data import *
from settings import *
from actif_class import * 

def tanking(list_spreads,settings):    
####    Tanking    ####  
    fenetre = settings.fenetre    
    list_spread_exit,list_spread_temp= [],[]

    ii= 0       
    for spread in list_spreads : 
        avc = ii * 100/float(len(list_spreads))
        print "Be patient. Tanking in progress..." , avc,"%"
        info = tankython (list_spreads,fenetre,ii) 
        list_spread_temp.append(info)
        ii = ii + 1
    list_spread_exit = check_list(list_spread_temp)

    return list_spread_exit

#usual.py

def check_list(list_entry):
    i = 0
    while i < len(list_entry):
        if list_entry[i] == 0 :
            list_entry.pop(i)
        else : 
            i = i+ 1
    return list_entry

这是我发现错误消息,因为我要求Py从ordinary.py导入所有内容:

File "tankython.py", line 77, in tanking
  list_spread_exit = check_list(list_spread_temp)

NameError: global name 'check_list' is not defined

最后一件事:最终,如果我将函数放在tankython模块中,那么Py接受整个过程。但是我真的想知道我在这里做错了什么。

干杯球员

2 个答案:

答案 0 :(得分:1)

尝试将文件tankython.py和ordinary.py放在相同文件夹中并使用

from usual import check_list

而不是

from usual import *

可能有帮助。 或者你可以试试:

import usual

然后更改代码:

usual.check_list()

并且

from module import *
如果两个包具有相同的名称函数,

不是导入内容的好方法。

答案 1 :(得分:0)

我找到了另一个解决方案,虽然它不是最优秀的解决方案,特别是因为它没有解释出现了什么问题。但是,我通常用f_usual重命名了整个模块,它工作得很好。

感谢您的帮助