2016-04-11 3 views
-1

in meiner Haupt-Python-Datei Ich lade nur das Mathematik-Modul und ein eigenes Modul (genannt funcs.py). Schließlich führe ich eine Funktion vom gerade geladenen Modul aus.Verwenden von Mathematik in geladenem Modul in Python 3

import math 
from funcs import * 

RetentionTime(1,2,3,4) 

Die funcs.py Datei sieht wie folgt aus:

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

return RT 

Dies führt zu folgendem Nameerror:

NameError: name 'math' is not defined

In der Python-Shell ich Befehle wie Math.atan verwenden können (...) ohne Problem. Was mache ich falsch?

Danke.

+7

Fügen Sie Importmathematik zu funcs.py –

+2

hinzu und entfernen Sie Importmathematik von Ihrem Haupt – jmugz3

+0

Zur Übersicht verwende ich Konstanten, die ich in einer separaten Datei (costs.py) und Funktionen verwende, auch (funcs.py). Ich möchte in der Hauptdatei arbeiten und hier vielleicht auch mathematische Funktionen verwenden. Ist es nicht möglich, das Mathematikmodul nur einmal zu importieren? – Simon

Antwort

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

Hier f binden das Objekt y von dem innersten Umfang genannt, die in diesem Fall ist der Modul Umfang test.py. Wäre es gewesen, wie folgt,

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

Hier die y gebunden in f wird Objekt 10 sein. In Ihrem Fall ist RetentionTime in einem eigenen Modulumfang kompiliert und hat keinen Zugriff auf den Umfang des Aufrufers. Fügen Sie daher import math zu demselben Modul wie RetentionTime hinzu.