【发布时间】:2015-06-14 12:00:08
【问题描述】:
我正在尝试创建一个函数servo_to_quadrant,它返回值servo_quadrant。
与此类似的问题涉及函数外部的全局变量存在问题。在这种情况下,我认为这不是问题,因为仅在函数内部需要变量(尽管我可能是错的)。
代码:
def servo_to_quadrant(servo_val):
if servo_val < 0: 360 + servo_val
if servo_val >= 360: servo_val = servo_val - 360
if servo_val >= 0 and servo_val < 90: servo_quadrant = 1
if servo_val >= 90 and servo_val < 180: servo_quadrant = 2
if servo_val >= 180 and servo_val < 270: servo_quadrant = 3
if servo_val >= 270 and servo_val < 360: servo_quadrant = 4
return servo_quadrant
servo_val = -30
quadrant = servo_to_quadrant(servo_val)
print(quadrant)
错误:
Traceback (most recent call last):
File "test2.py", line 11, in <module>
quadrant = servo_to_quadrant(servo_val)
File "test2.py", line 8, in servo_to_quadrant
return servo_quadrant
UnboundLocalError: local variable 'servo_quadrant' referenced before assignment
【问题讨论】:
-
只需在函数开始时将其初始化为某个值。像这样
servo_quadrant = 0 -
也许您可以只返回所需的值,而不是使用伺服象限变量。喜欢
if servo_val < 0: return 360 + servo_val -
Zlopez -
servo_quadrant = 0似乎返回了0,就好像它跳过了所有的 if 函数一样。 artemdevel - 我试图推断servo_val落入的象限。
标签: python variables variable-assignment local