首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和缩进,入门有问题。

Python和缩进,入门有问题。
EN

Stack Overflow用户
提问于 2009-10-05 07:22:34
回答 9查看 558关注 0票数 2

我刚开始学习python,并且正在学习。我大部分来自C语言背景。

代码语言:javascript
复制
class Alarm:

    def timer():

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

    main()

当我尝试运行这段代码时,我总是得到一个愚蠢的错误:

代码语言:javascript
复制
alarm > python alarm.py 
  File "alarm.py", line 5
    def main():
      ^
IndentationError: expected an indented block
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-10-05 07:54:05

正如其他人所指出的,由于timer()没有主体,所以存在语法错误。

在python中根本不需要使用main()。通常,人们使用它来表示文件是顶层程序,而不是要导入的模块,但这只是惯例

你也可能会看到这个成语

代码语言:javascript
复制
def main():
    blah blah

if __name__ == "__main__":
    main()

这里的__name__是一个特殊的变量。如果文件已经导入,它将包含模块名称,因此比较将失败,并且main不会运行。

对于顶层程序,__name__包含"__main__“,因此将运行main()函数。

这很有用,因为有时模块可能会在作为程序加载时运行测试,但如果要将其导入到较大的程序中,则不希望运行这些测试

票数 0
EN

Stack Overflow用户

发布于 2009-10-05 07:24:39

你有一个空的def

代码语言:javascript
复制
def timer():

使用

代码语言:javascript
复制
def timer():
    pass

而不是。

票数 11
EN

Stack Overflow用户

发布于 2009-10-05 07:27:17

了解pass statementmain通常不是课程的一部分。

全局(模块级) main()函数比Alarm.main()类方法简单。通常,main()函数是在模块级实现的。

代码语言:javascript
复制
class Alarm:

    def timer():
        pass

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

main()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1518659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档