Python语法错误求助:return outside function报错及round函数使用问题
解决Python传感器数据存MySQL时的两个语法问题
看起来你在处理温度传感器数据并写入MySQL时遇到了两个典型的Python语法/缩进问题,我来帮你逐一梳理:
1. return round(function,1)的语法错误
这里的问题很明确:round()函数的第一个参数需要是数值类型(比如整数、浮点数),而你写的function是一个函数名(或者拼写错误的变量名),不是一个具体的数值。
举个正确的例子:如果你的代码里有一个获取原始温度的函数,比如read_raw_temp(),那你应该先调用这个函数拿到数值,再传入round():
def get_rounded_temp(): raw_temp = read_raw_temp() # 调用函数获取原始温度数值 return round(raw_temp, 1) # 对数值进行四舍五入保留1位小数
如果是变量名写错了,比如本来应该是temp_value却写成了function,那修正变量名即可。
2. "RETURN OUTSIDE FUNCTION"错误
Python对缩进的要求极其严格——哪怕你的代码“看起来”在函数和if内部,只要缩进级别不对,解释器就会判定return在函数外。
比如下面的错误示例(缩进错误):
def get_temp_c(): # 读取传感器数据的代码... if temp_c > 0: return round(temp_c,1) # 这里的缩进和def对齐,不在函数内部!
正确的缩进应该是这样的(用4个空格缩进,不要混用tab):
def get_temp_c(): # 读取传感器数据的代码,比如从/sys/bus/w1/...读取 temp_c = 25.678 # 示例数值 if temp_c is not None: return round(temp_c, 1) # 这个return在函数和if的缩进块内 else: return None # 处理异常情况
你可以检查第35行return的缩进:它应该比外层的def多4个空格,同时和所在的if语句块保持相同缩进级别。如果之前用了tab,建议统一换成4个空格,避免缩进混乱。
另外,如果你是在脚本的全局代码里写了return(不在任何def定义的函数内),那也会触发这个错误——return只能用在函数内部哦。
内容的提问来源于stack exchange,提问作者Njord Nyström
相关产品推荐
相关产品推荐

