2016-04-11 55 views
-1

我只是加載數學模塊和一個自己的模塊(稱爲funcs.py)。最後,我從剛加載的模塊運行一個函數。在我的主python文件中使用加載模塊中的數學Python 3

import math 
from funcs import * 

RetentionTime(1,2,3,4) 

的funcs.py文件看起來是這樣的:

def RetentionTime(a, b, c, d): 
"calculation of retention time" 
RT = (11.2 * a)/(b * c * math.degrees(math.atan(d/100))) 

return RT 

這導致以下Nameerror:

NameError: name 'math' is not defined

在Python Shell中我可以像使用math.atan命令( ...)沒有問題。我究竟做錯了什麼?

感謝。

+7

將導入數學添加到funcs.py –

+2

並刪除主要的導入數學 – jmugz3

+0

爲了便於概述,我將常量用於單獨的文件(consts.py)和函數(funcs.py)中。我想在主文件中工作,也可以在這裏使用數學函數。難道只能導入數學模塊一次嗎? – Simon

回答

0
# test.py 
y = 5 
def f(x): 
    print(x+y) 

這裏f將結合從最內範圍,在這種情況下是test.py模塊範圍命名y的對象。如果這是如下,

y = 5 
def g(): 
    y = 10 
    def f(x): 
     print(x+y) 
    return f 

在這裏,在f勢必將對象10y。在你的情況下,RetentionTime被編譯到它自己的模塊範圍中,並且不能訪問調用者的範圍。因此,將import math添加到與RetentionTime相同的模塊。