python中raspberry pi的缩进错误

python中raspberry pi的缩进错误,python,python-2.x,Python,Python 2.x,我正在用我的Raspberry Pi和python创建一个运动传感器。我可以很好地打印“运动检测!”,但现在我想添加一个功能来拍摄照片。我在camera=picamera.picamera()行中遇到缩进错误。删除此行会导致下一行出现缩进错误。这是怎么回事?我定义的回调只能是一行代码吗 # coding: utf-8 import RPi.GPIO as GPIO import picamera import time GPIO.setmode(GPIO.BCM) PIR_PIN = 7

我正在用我的Raspberry Pi和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

当查看
运动
函数的缩进时,就是这样(选项卡由
\t
可视化):

如您所见,
打印
用空格缩进,而其余行先用3个制表符缩进,然后用3个空格缩进。因此,打印和下面的行有一个不同的缩进,这会使Python崩溃

在Python缩进中,对于缩进级别,缩进需要完全相同。因此,如果先缩进15个空格,则需要为整个函数体保持该级别


一般来说,缩进的方式应该完全一致:要么使用制表符,要么使用空格。不要两者都使用,尤其不要在同一行中使用。

你在混合空格和制表符。这不是Python 3,因此无法使用您提供的代码复制错误-请正确复制粘贴:因此您使用了错误的选项卡大小,在Python 2中(如此处所示),选项卡和空格可以混合使用,但TabStop位于8个空格处。在Python3中,制表符和空格绝对不能混用。简单有效。谢谢或者更好:永远不要使用标签,句号。这里是新代码,所以不需要开始使用令人困惑的约定。@AnttiHaapala人可以自由使用他们想要的任何东西。不要把这变成一个标签与空间的讨论。可以指出的是,这一讨论非常重要
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