Python作为一门较为灵活的解释型脚本语言,其中定义的main()函数只有当该Python脚本直接作为执行程序时才会执行;

当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。

这是由于两方面原因,一方面,main函数是所有执行程序的入口;另一方面,python的解释器是顺序执行脚本的并且不会调用任何不属于程序本身的代码和函数,需要补充说明的一点是,如果是被作为一个模块或库import到程序中,则会直接成为代码的一部分。

下面可以通过程序来更好地了解main函数的作用,这里我们编写两段程序print_main_function.py和print_main_module.py

print_main_function.py

#import os#import time

importdatetimeprint('Hello World!')print('Time is', datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S %A'))print('__name__ value:', __name__)defmain():print('this message is from main function')if __name__ == '__main__':

main()#print(__name__)

print_main_module.py

importprint_main_functionprint("Done!")

单独运行print_main_function.py程序,结果如下

运行print_main_module.py程序(将print_main_function.py作为module引入执行),结果如下

对比两段程序运行结果可发现,当直接运行包含main函数的程序时,main函数会被执行,同时程序的__name__变量值为'__main__'。

当包含有main函数的程序被作为module被import时,该module程序(print_main_function.py)对应的__name__变量值为该module对应的函数名称,因此该module程序(print_main_function.py)中的main函数不会被执行。

结论:因此需要注意的是,python程序是逐行执行的,因此事先定义main()函数很重要,以防程序中有if条件语句去执行main()函数,这样就可以避免程序执行报错NameError: name "main" not defined

python中def main是什么意思_浅析Python中的main函数相关推荐

  1. python中对象和变量的关系_浅析python中的类变量和对象变量

    刚学python,学到了有关于类和对象的地方.对一个概念有点模糊,后来通过实践编码找到一定规律 在python中 class test(object): id=2 name='tt' list=['t ...

  2. python中def main是什么意思_关于python:为什么使用def main()?

    本问题已经有最佳答案,请猛点这里访问. Possible Duplicate: What does if __name__=="__main__" do? 我看过一些代码示例和教程 ...

  3. python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式

    漫谈 如果作为一个Python入门,不了解Python装饰器也没什么,但是如果作为一个中级Python开发人员,如果再不对python装饰器熟稔于心的话,那么可能并没有量变积累到质变. 我以前也看过很 ...

  4. python里面列表可以同时删除吗_在python中从列表中删除项,同时对其进行迭代

    本问题已经有最佳答案,请猛点这里访问. 我正在为锦标赛应用程序编写循环算法. 当玩家数量为奇数时,我将'DELETE'添加到玩家列表中,但稍后,当我想从包含'DELETE'的日程表列表中删除所有项目时 ...

  5. 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型

    原标题:[Python连载]那些必须掌握的Python数据类型 经过近几年的发展,Python已成为了数据科学和机器学习的首选语言,许多人也因此开始走上自学python之路.从今天开始,本公众号将陆续 ...

  6. python中的序列类型数据结构元素的切片操作_浅析python中的分片与截断序列

    浅析python中的分片与截断序列 序列概念 在分片规则里list.tuple.str(字符串)都可以称为序列,都可以按规则进行切片操作 切片操作 注意切片的下标0代表顺序的第一个元素,-1代表倒序的 ...

  7. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表

    简要 利用python实现把一个工作表中的某些列,和其中单独的一列,提取成为一个个新表. 如图(处理前)蓝色部分是需要保留的列,红色是需要一项一项分出来作为单独表格的列. 其中,第一行的名字是用的回车 ...

  8. python装饰器原理wraps(method)(self)_理解Python中装饰器最佳方法~

    了解装饰器之前, 可以先了解一下什么是闭包的概念为好: 闭包, 是指在一个函数中定义了一个另外一个函数,内函数里运用了外函数的临时变量(实际参数也是临时变量),并且外函数的返回值是内函数的引用(一切皆 ...

  9. python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph

    用Python串口实时显示数据并绘图 使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 &qu ...

  10. python安装后找不到目录_将python setup.py安装到其他路径中找不到已安装的packag

    我有一个测试设置文件,它是我为一个简单的"hello world"脚本创建的.我有一个名为mytest的包,它有一个函数hello.现在,我有一个非常简单的setup.py.如果我 ...

最新文章

  1. 【Android】ActivityManager结构图
  2. 音视频技术开发周刊 | 215
  3. C 中可以这样写函数的参数 !!
  4. 剑指Offer - 面试题58 - II. 左旋转字符串
  5. 如何在验证集加噪声_B端硬件如何开展产品测试?
  6. .htaccess 重定向_如何使用.htaccess将HTTP重定向到HTTPS
  7. 冲刺!11.14-11.15
  8. Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
  9. Windows + Ubuntu双系统开机选择界面美化
  10. win7适合oracle哪个版本下载,win7系统下载--Windows 7下成功安装ORACLE客户端
  11. 联通的G网和C网分别是什么意思?
  12. amd cpu 安卓模拟器_AMD的CPU如何运行安卓模拟器?
  13. 智能暖风机——7.LED驱动和断电记忆功能
  14. 密集芯片的焊接技巧:从LQFP64说起
  15. Ural 2045 Richness of words
  16. Elasticsearch查询时还在百度DSL语句吗?你可能需要这份总结
  17. 遇事不决,量子力学;不懂配色,赛博朋克。推荐一个Python可视化库
  18. 二体问题之1:二体运动方程
  19. 【大数据入门核心技术-HBase】(四)HBase2.2.2高可用集群搭建
  20. (Modern Family S01E03) Part 3  MitchCam  准备买diaper Cam说Mitch势力 逛超市Mitch像是发现了新大陆

热门文章

  1. 中兴olt xpon开局及业务配置以及原理
  2. AWB(Attention WaveBlock)
  3. 开始学 ruby on rails
  4. .NET发邮件(验证码)
  5. 从函数型数据到光滑函数
  6. 今日恐慌与贪婪指数为22 恐慌程度有所缓解
  7. The Python Challenge Level-4 Solution
  8. html5 制作书架展示 PHP,基于HTML5 Canvas的CSG构造实体几何书架
  9. 未来可期的TypeScript
  10. 机器人聊天软件c#_我的C#之路之简单的聊天机器人。