Python中的main方法教程

估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看。但事实上python中是没有你理解中的“main()”方法的。

言归正传

if name == "main":可以看成是python程序的入口,就像java中的main()方法,但不完全正确。
事实上python程序是从上而下逐行运行的,在.py文件中,除了def后定义函数外的代码都会被认为是“main”方法中的内容从上而下执行。如果只是写个伟大的"hello world",不想写函数的话,仅仅是print('hello world')就可以,这就是一个“程序”,不需要所谓的“main”方法入口。当然如果是测试函数功能就需要在.py文件中写上if name == "main",再调用函数。

比如如下hello.py文件:

# Python学习交流QQ群:711312441
print("first")
 
 
def sayHello():
    str = "hello"
    print(str);
    print(__name__+'from hello.sayhello()')
 
 
if __name__ == "__main__":
    print ('This is main of module "hello.py"')
    sayHello()
    print(__name__+'from hello.main')

运行结果:

first
This is main of module "hello.py"
hello
__main__ from hello.sayhello()
__main__ from hello.main

懂我意思吧?先执行的第一行print再执行“入口”中的东西

话说回来,if name == "main"这句话是个什么意思呢?

name__其实是一个内置属性,指示当前py文件调用方式的方法。当上述例子运行的时候,整个程序中不管是哪个位置的__name__属性,值都是__main,当这个hello.py文件作为模块被导入到另一个.py文件中(即import)比如说world.py,并且你运行的是world.py,此时hello.py中的__name__属性就会变成hello,所谓的入口因为if判断失败就不执行了

所以if语句的判断成功虚拟了一个main()方法。

说到了phthon是逐行执行的,所以当它读到import hello的时候,也会执行hello.py,比如运行如下world.py文件:

import hello#上一个例子的hello.py
 
if __name__ == "__main__":
    print ('This is main of module "world.py"')
    hello.sayHello()
    print(__name__)

执行结果:

first
This is main of module "world.py"
hello
hellofrom hello.sayhello()
main

可以看到hello.py中的第一行print('first')直接被执行了,并且hello.py中的__name__输出的也是hello,world.py中的name输出的是__main__

总结:

要适应python没有main()方法的特点。所谓的入口其实也就是个if条件语句,判断成功就执行一些代码,失败就跳过。没有java等其他语言中那样会有特定的内置函数去识别main()方法入口,在main()方法中从上而下执行

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中的main方法教程 - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • Python教程:list.sort()和函数sorted(list)

    1.sort()是列表的方法,修改原列表使得它按照大小排序,没有返回值,返回None In [90]: x = [4, 6, 2, 1, 7, 9] In [91]: x.sort() In [92]: x Out[92]: [1, 2, 4, 6, 7, 9] In [98]: aa = x.sort() In [99]: aa # 返回None 2.so…

    Python开发 2023年4月2日
    00
  • Python推导式创建数列的方法

    一、列表推导式 列表推导式生成列表对象,语法如下: ”’ [表达式 for item in 可迭代对象] 或者 [表达式 for item in 可迭代对象 if 条件判断] ”’ 例子 l1 = [x for x in range(5)] print(l1) # [0, 1, 2, 3, 4] l2 = [x*2 for x in range(1,5)…

    Python开发 2023年4月2日
    00
  • Python学习:绑定方法与非绑定方法

    一、绑定方法与非绑定方法 类中定义的函数分为两大类:绑定方法和非绑定方法 其中绑定方法又分为绑定到对象的对象方法和绑定到类的类方法。 在类中正常定义的函数默认是绑定到对象的,而为某个函数加上装饰器@classmethod后,该函数就绑定到了类。 我们在之前的章节中已经介绍过对象方法了,本节我们主要介绍类方法。类方法通常用来在__init__的基础上提供额外的…

    Python开发 2023年4月2日
    00
  • Python中文分词库——jieba的用法

    1.介绍 jieba是优秀的中文分词第三方库。由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个单词,这种手段就叫分词。而jieba是Python计算生态中非常优秀的中文分词第三方库,需要通过安装来使用它。 jieba库提供了三种分词模式,但实际上要达到分词效果只要掌握一个函数就足够了,非常的简单有效。 安装第三方库需要使用pip…

    python 2023年4月25日
    00
  • python进程池中的回调函数

    什么是回调函数 指定一个任务后、并且指定一个回调函数后,当指定的进程池执行的任务结束后,会将该任务的返回值作为回调函数的参数传递到回调函数中,并且回调函数得以执行 回调函数在主进程中被执行 import os from multiprocessing import Pool def func1(n): print(‘in func1’, os.getpid(…

    python 2023年4月17日
    00
  • Python学习:配置日志的几种方式

    作为开发者,我们可以通过以下3种方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数;2)创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容;3)创建一个包含配置信息的dict,然后把它传递个dictConfig()函数; 需要说明的是,log…

    2023年4月2日
    00
  • python中5个带key的内置函数

    1.max取最大值函数 max() 方法返回给定参数的最大值,参数可以为序列。 lis = [1,2,3,-4] print(max(lis)) #返回lis列表中的最大值 ”’结果: 3 ”’ print(max(lis,key=abs)) #key参数指向绝对值函数,返回的结果是-4 2.min取最小值函数 min() 方法返回给定参数的最小值,参数…

    Python开发 2023年4月2日
    00
  • Python教程:几个常用的内置函数

    匿名函数(lambda表达式) 在Python中,函数可以算的上是“一等公民”了,我们先回顾下函数的优点: 减少代码重复量 模块化代码 但是我们有没有想过,如果我们需要一个函数,比较简短,而且只需要使用一次(无需重复调用),那还需要定义一个有名字的函数么? 答案是否定的,这里我们就可以使用匿名函数来实现这样的功能。 我们先看看求一个数的平方,我们定义个函数怎…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部