1.main函数:

在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数

每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。这个特性,为测试驱动开发提供了极好的支持,我们可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。

典型的Python文件结构:

转载自:https://blog.csdn.net/DreamD1987/article/details/9446715

 import sys2 def Fuc():3     print 'hello'4     5 if __name__ == '__main__':6     if len(sys.argv) != 3:7         print 'Usage: python input_name output_name'8         exit(1)9     f_input = sys.argv[1]
10     f_output = sys.argv[2]
11     Fuc()
  • 5行“ if __name__ == '__main__':”含义:python文件后缀为".py"。 其中分两类:一类是直接执行, 另一类是作为模块被调用(import ***.py).
  • __name__ 作为模块的内置属性,即".py"文件的调用方式。如果等于“__main__"就直接执行本文件, 如果是别的就是作为模块被调用
  • 6行:sys.argv 用来获取命令行参数。对于“python  code.py  input_name  output_name ”,共三个参数:code.py为sys.argv[0], input_name 为sys.argv[1], output_name为sys.argv[2] 。 同时注意引入模块sys

初次接触Python的人会很不习惯Python没有main主函数。 以下面的程序为例:

  1. #hello.py
    def foo():   str="function"   print(str);
    if __name__=="__main__":   print("main")   foo()   

其中if __name__=="__main__":这个程序块类似与Java和C语言的中main(主)函数 
在Cmd中运行结果 
C:\work\python\divepy>python hello.py 
main 
function

在Python Shell中运行结果 
>>> import hello 
>>> hello.foo() 
function 
>>> hello.__name__ 
'hello' 
>>> 
可以发现这个内置属性__name__自动的发生了变化。

这是由于:

当你以单个文件运行时,__name__便是__main__ 
当你以模块导入使用时(import ***.py),这个属性便是这个模块的名字。

2.关于if __name__=='__main__'

if __name__=='__main__'说白了就是判断__name__变量是不是等于__main__,

  • 当执行文件本身时候__name__变量等于main,此时判断成立并执行判断语句中的代码,
  • 当调用该模块的时候__name__并不等于__main__条件不成立,不执行判断下面的语句,可以认为为了调试模块,因为在模块导入的时候并不执行if下面的语句
  1. 对于编程语言来说,程序都必须要有一个入口,比如java和c#必须要有一个包含main方法的主类来作为程序的入口,而python则不同,它属于脚本语言,它是从脚本的第一行开始执行,没有统一的入口。
  2. 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。
  3. if __name__ == '__main__' 就相当于是 Python 模拟的程序入口,由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。
  4. __name__ 是内置变量,用于表示当前模块的名字,如果一个模块被直接运行,其 __name__ 值为 __main__。
  5. if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。

转载自:https://blog.csdn.net/u010159842/article/details/52804058

https://www.cnblogs.com/zwgblog/p/7494482.html

python 关于main函数以及if __name__=='__main__'的理解相关推荐

  1. python中main函数在运行中不是必须要写的_Python必备知识之“if __name__ == '__main__':”...

    在学习Python的过程中经常会看到"if __name__ == '__main__':"这行代码,那么这行代码的作用究竟是什么呢? "if __name__ == ' ...

  2. 为什么Python没有main函数?

    作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...

  3. 为什么 Python 没有 main 函数?

    作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...

  4. python 中main函数总结

    Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数. 每个文件(模块)都可以任意写一些没有缩进的代码 ...

  5. python没有main函数的概念吗_为什么Python没有main函数?

    作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到" Python的main函数" ...

  6. python没有main函数也可以_为什么Python没有main函数?,

    为什么Python没有main函数?, 我为什么也不推荐 毫无疑问,Python中没有所谓的主入口函数,但是互联网上经常有文章提到" Python的Main函数"和"建议 ...

  7. 魔力Python--if __name__ == '__main__' 的理解

    if __name__ == '__main__' 的理解 __name__ 是当前模块名,当模块被直接运行时模块名为 __main__ . 这句话的意思就是,当模块被直接运行时,以下代码块将被运行, ...

  8. 【Python】main函数 if __name__=='__main__' 详解

    引言 我们先看下各个编程语言的代码框架输出Hello,World C #include <stdio.h> int main() {printf("Hello, World! \ ...

  9. python强制结束函数_为什么Python没有 main 函数?终于有人给出了正确答案!

    毫无疑问,Python中没有所谓的 main 入口函数,但在网上经常有文章提到"Python中的main函数"和"建议编写main函数"等. 他们的目的可能是模 ...

  10. python def main好处_python中 __name__及__main()__的妙处

    #hello.py def sayHello(): str="hello" print(str); if __name__ == "__main__": pri ...

最新文章

  1. 对话计算机史学权威,才知道量子计算机马上要来了
  2. MIT自动驾驶船下水!可乘坐5人,阿姆斯特丹运河航行3小时误差不到0.17米
  3. Android的消息机制(2)
  4. CUBLAS_STATUS_ALLOC_FAILED CUDA_ERROR_OUT_OF_MEMORY
  5. 【Python学习教程】:装饰器的详细教程,通俗易懂
  6. 从@Transactional看事务的传播和隔离
  7. oracle / parallle /,Oracle海量数据迁移之使用shell启用多个动态并行
  8. android 电池高温关机,Android 关机问题分析指南
  9. 单片机 c语言 宏程序,宏程序学习的几点心得.doc
  10. webpack手动构建vue和vue-cli构建使用 px2rem-loader ,全局自动转换px单位,让自适应来的更简单点!...
  11. 软件配置--ubuntu16.04
  12. 浅析帧、帧数、帧率、FPS区别
  13. 远程主机强迫关闭了一个现有的连接.
  14. 学习OpenCV(4) 基于OpenCV的双目测距程序
  15. 脑机接口的过去、现在与未来
  16. java的生活状态,生活状态 - Dorian's Blog - BlogJava
  17. 2022年系统集成项目管理工程师考试知识点:项目成本管理
  18. Abnormal Activity Detection Using Pyroelectric Infrared Sensors
  19. 一键下载steam高清视频
  20. 将动态磁盘无损转成基本磁盘

热门文章

  1. man exportfs(exportfs命令中文手册)
  2. shiro+springmvc+mybatis【转】
  3. Apache Spark技术实战之1 -- KafkaWordCount
  4. 205615872 能用来干么?
  5. 一份针对于新手的多线程实践
  6. SpingBoot —— RestTemplate的配置
  7. 考研数据结构-二叉树
  8. 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
  9. java 20 -1 递归的概述和案例
  10. nodejs+express中设置登录拦截器