2016-10-12 2 views
0

Ich bin Fehler immer verschachtelte Funktion in meinem Python-Interpreter in LaufenNamen Fehler in Python mit verschachtelter Funktion

import MySQLdb 
import serial 
import time 
import smtplib 


ser=serial.Serial('/dev/ttyACM1',9600) 
db=MySQLdb.connect("localhost","root","pass","db") 

cursor=db.cursor() 

while 1: 
    print("Waiting ;;...") 
    print("") 
    print("collecting") 
    print("") 

    time.sleep(3) 

    x=ser.readline() 
    time.sleep(3) 
    if x>700: 
    send() 
    print"send mail" 

    print("inserting into Database") 
    sql="INSERT INTO vidit2(temp) VALUES(%s);" %(x) 
    cursor.execute(sql) 
    db.commit() 
    time.sleep(3) 



def send(): 

content="send" 

mail=smtplib.SMTP("smtp.gmail.com",587) 

mail.ehlo() 

mail.starttls() 

mail.login("emailid","pass") 

mail.sendmail("sender","reciever",content) 

mail.close() 

Fehler: Python temp.py Waiting ;; ...

sammeln

Traceback (letzter Anruf zuletzt): Datei "temp.py", Zeile 24, in send() NameError: Name 'senden' ist nicht definiert

Bitte helfen Sie. Vielen Dank im Voraus

Antwort

1

Im Gegensatz zu, sagen wir, JavaScript, das wird "hoist" Funktionsdefinitionen während der Kompilierung, so dass sie aufgerufen werden können, bevor sie in Ihrem Code definiert sind (nur darüber gelernt neulich mir so vergeben, wenn dies eine zu starke Vereinfachung ist) In Python müssen Sie Funktionen definieren, bevor Sie sie aufrufen (interessante Diskussion here). Das bedeutet, Sie tun müssen:

def send(): 
... 

vor:

send() 
Verwandte Themen