Python与缩进,入门遇到困难。

2 投票
9 回答
743 浏览
提问于 2025-04-15 14:48

我刚开始学习Python,现在还在适应中。我之前主要是用C语言。

class Alarm:

    def timer():

    def main():
        print ("Timer has Started")

    main()

每次我尝试运行这段代码时,总是会遇到一个很傻的错误:

alarm > python alarm.py 
  File "alarm.py", line 5
    def main():
      ^
IndentationError: expected an indented block

9 个回答

3

了解一下pass语句,通常情况下,main并不是类的一部分。

一个全局的(模块级别的)main()函数比Alarm.main()这个类方法要简单。一般来说,main()函数是在模块级别出现的。

class Alarm:

    def timer():
        pass

def main():
    print ("Timer has Started")

main()
11

你有一个空的定义

def timer():

def timer():
    pass

来代替。

0

正如其他人提到的,你的代码有个语法错误,因为timer()这个函数里面没有内容。

在Python中,其实根本不需要使用main()这个函数。通常人们用它来表示这个文件是一个顶层程序,而不是一个可以被导入的模块,但这只是个约定。

你可能还会看到这样的写法:

def main():
    blah blah

if __name__ == "__main__":
    main()

这里的__name__是一个特殊的变量。如果这个文件被导入了,它会包含模块的名字,这样比较就会失败,main()就不会运行。

对于顶层程序来说,__name__的值是"__main__",所以main()函数会被执行。

这样做很有用,因为有时候你的模块在作为程序加载时可能会运行一些测试,但如果你把它导入到一个更大的程序中,就不想让那些测试运行。

撰写回答