2016-10-12 5 views
0

Я получаю ошибку в управлении вложенной функции в моем питоне переводчикеошибка Имени в питоне с вложенной функцией

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() 

Ошибка: питон temp.py Ожидание ;; ...

сбор

Traceback (последний звонок последний): Файл «temp.py», строка 24, в send() NameError: имя «отправить» не определено

Пожалуйста, помогите. Заранее спасибо

ответ

1

В отличии от, скажем, JavaScript, который будет "hoist" определения функций во время компиляции, так что они могут быть вызваны, прежде чем они определены в коде (только узнал об этом на дни так что простите меня, если это упрощение) , в Python вам нужно определить функции, прежде чем вы их назовете (интересное обсуждение here). Это означает, что вам нужно сделать:

def send(): 
... 

перед:

send()