• Python程序执行顺序


    #示例代码基于py3.6

    一直对Python程序的执行顺序有些疑惑,例如python程序是顺序执行的,那怎么还有main函数的出现呢?

    在查阅了资料后,参见这里后,算是有点明白了:

    1.python程序是顺序执行的,而C++中main()是程序的入口

    例如以下代码,结果如注释所示,这里虽然有个main函数,但是最先输出的不是“main”而是“test1”:

     1 #test1
     2 print ("test1")
     3 def Fun():
     4     print ("Fun")
     5 def main():
     6     print ("main")
     7     Fun()
     8 if __name__ == '__main__':
     9     main()
    10 '''
    11 test1
    12 main
    13 Fun
    14 '''

    2.一段python程序以py文件运行时,文件属性__name__为main;作为模块导入时,文件属性__name__为文件名:

     1 #test.py
     2 def Fun():
     3     print ("Fun")
     4 if __name__ == '__main__':
     5     print ("main")
     6     Fun()
     7 '''
     8 main
     9 Fun
    10 '''

     

    3.总结

    C++中一main函数为执行的起点;Python中首先执行最先出现的非函数定义和非类定义的没有缩进的代码,如示例一之中的第一行

    一份程序为了区分主动执行还是被调用,Python引入了变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'

    所以会经常看到别人的代码这么写,同时也是典型的python文件结构:

     1 #/usr/bin/env/ python            #(1) 起始行
     2 #"this is a test module"          #(2) 模块文档(文档字符串)
     3 import sys
     4 import os              #(3) 模块导入
     5 
     6 debug = True              #(4) (全局)变量定义
     7 class FooClass (object):
     8     'foo class'
     9     pass                           #(5) 类定义(若有) 
    10 def main():
    11     'test function'
    12     foo = FooClass()
    13     if debug:
    14         print 'ran test()'         #(6) 函数定义(若有) 
    15 if __name__ == '__main__':
    16     main()

    若是文件主动执行了,则最好写成跟上面的例子一样,main之前不要有可执行代码,这样做到程序从main()开始,流程逻辑性强

    若是文件作为模块被调用,则可以不用写main(),从上而下顺序执行。

  • 相关阅读:
    call/cc 总结 | Scheme
    用call/cc合成所有的控制流结构
    词法作用域 vs 动态作用域
    数论部分第二节:埃拉托斯特尼筛法
    1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
    C++面向对象作业1
    数论部分第一节:素数与素性测试【详解】
    基数排序与桶排序,计数排序【详解】
    计蒜客:百度的科学计算器(简单)【python神解】
    优质免费在线学习网站【自用】
  • 原文地址:https://www.cnblogs.com/cnXuYang/p/8336370.html
Copyright © 2020-2023  润新知