为什么python会给出 Sytanx错误''返回外部功能' 错误第35行:>>>>返回(temp_c,1)?我是初学程序员,我想存储我的传感器数据mysql。当你在我的函数和if语句中看到我的返回轮次(temp_c,1)时。 这是我的完整代码
导入操作系统 进口时间 导入日期时间 导入glob import mysql.connector 来自mysql.connector导入错误代码 从时间导入strftime
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
temp_sensor = '/sys/bus/w1/devices/28-000008a43c0e/w1_slave'
#Connect MySQL
#-----------------------------------------------------------------------------------
cnx = mysql.connector.connect(user='root',password='invoker',
host='localhost',
database='temp-at-interrupt')
cnx.close()
#
#Get Temperature Values.
#-----------------------------------------------------------------------------------
def tempRead():
t = open(temp_sensor, 'r')
lines = t.readlines()
t.close()
temp_output = lines[1].find('t=')
if temp_output != -1:
temp_string = lines[1].strip()[temp_output+2:]
temp_c = float(temp_string)/1000.0
return round(temp_c,1)
#Insert new data
#-----------------------------------------------------------------------------------
while True:
print(temp)
datatimeWrite = (time.strftime("%Y-%m-%d ") + time.strftime("%H:%M:%S"))
print (datetimeWrite)
sql = ("""INSERT INTO tempLog (datetime,temperature) VALUES (%s,%s)""",(datetimeWrite,temp))
try:
print ("Writing to database...")
# Execute the SQL command
cur.execute(*sql)
# Commit your changes in the database
db.commit()
print ("Write Complete")
except:
# Rollback in case there is any error
db.rollback()
print ("Failed writing to database")
cur.close()
db.close()
break
答案 0 :(得分:1)
你不能在函数中使用return
,这是非法的Python(和大多数编程语言)语法。
if temp_output != -1:
temp_string = lines[1].strip()[temp_output+2:]
temp_c = float(temp_string)/1000.0
return round(temp_c,1) # <---- problematic return statement outside a function
我相信这个if
块是tempRead()
函数的一部分,所以修复是删除if
块之前的空行,并识别{{1}中的所有代码1}}阻塞4个空格:
if