树莓派Python缩进错误
我正在用树莓派和Python制作一个运动传感器。之前我已经成功让它打印“检测到运动!”,但现在我想添加一个功能,让它还能拍照。在这行代码camera = picamera.PiCamera()
上,我遇到了缩进错误。如果我把这一行去掉,下一行又会出现缩进错误。这是怎么回事呢?我定义的回调函数只能写一行代码吗?
# coding: utf-8
import RPi.GPIO as GPIO
import picamera
import time
GPIO.setmode(GPIO.BCM)
PIR_PIN = 7
GPIO.setup(PIR_PIN, GPIO.IN)
filename = 0
def MOTION(PIR_PIN):
print "Motion Detected!"
camera = picamera.PiCamera()
filename = 'image' + filenumber + '.jpg'
camera.capture(filename)
filenumber = filenumber + 1
print "PIR Module Test (CTRL+C to exit)"
time.sleep(2)
print "Ready"
try:
GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
while 1:
time.sleep(100)
except KeyboardInterrupt:
print " Quit"
GPIO.cleanup()
enter code here
1 个回答
2
在查看\t
表示制表符):
def MOTION(PIR_PIN):
print "Motion Detected!"
\t\t\t camera = picamera.PiCamera()
\t\t\t filename = 'image' + filenumber + '.jpg'
\t\t\t camera.capture(filename)
\t\t\t filenumber = filenumber + 1
你可以看到,print
这一行是用空格缩进的,而其他的行则是先用3个制表符缩进,然后再加3个空格。所以print
和后面的行缩进方式不一样,这让Python感到困惑。
在Python中,缩进是很重要的,对于同一级别的缩进,必须完全一致。所以如果你一开始用15个空格缩进,那么整个函数的内容都必须保持这个缩进级别。
总的来说,你一定要保持缩进方式的一致性:要么全用制表符,要么全用空格。不要两者混用,尤其是在同一行中。