`
qindongliang1922
  • 浏览: 2152676 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116491
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124726
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58738
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70516
社区版块
存档分类
最新评论

Python3.4里面__name和__main__的作用

阅读更多
在python的代码里我们经常会看到这样两个片段,__name__和__main__那么代表什么意思呢?

在这之前,我们先来了解下python文件的调用方法,主要有两种
1,直接在cmd或shell终端调用xxx.py文件
2,导入别的python文件里做为一个工具类调用

懂了上面这两个方式后,我们在理解这两个属性的作用就好理解了,其实__name__是每个模块或类里面的内置属性,__main__代表直接运行这个py文件时的标记,如果不是__main__那就说明,这个py文件,是导入到别的python代码里,昨晚工具类使用的,下面看散仙写如下的例子:
这个是测试的python文件b.py代码

def say():
    print("say")

def b():
    print("B")

def c():
    print("C")


def d():
    print("D")



if __name__=="__main__":
    print("我是直接运行的")
    b();
else:
    print("不是直接运行!")


if __name__=="b":
    print("导入模块调用了")
else:
    print("其他模块")



在cmd下直接运行,打印结果如下:




在别的python代码里调用打印如下:
D:\python\python.exe D:/pythonide/pythonprojectworkspace/python/main方法测试/p.py
不是直接运行!
其他模块

Process finished with exit code 0



下面看下如何在python的里面,测试这个区别:


class  Person:
    def run(self):
        print("我在奔跑!")
    def swimming(self):
        print("我在游泳")
    if __name__=="__main__":
        print("Person里条用")
    else:
        print("oh no person!")


class Model:
    def say(self):
        print("我是一个model")
    def p(self):
        print("Model")
    if __name__=="__main__":
        print("Model里条用")
    else:
        print("oh no model!")





if __name__ =="__main__":
    p=Person();
    p.run();
else:
    x=Model();
    x.say();


打印的效果如下:
D:\python\python.exe D:/pythonide/pythonprojectworkspace/python/main方法测试/p.py
不是直接运行!
其他模块
oh no person!
oh no model!
我是一个model

Process finished with exit code 0



通过上面这个例子,我们能够看出来,在一个py文件里的多个类也是可以定义自己的__name__和__main__如果我们没有明确指定是那个类的方法,那么执行这个文件导入模块时,就会把这个py下所有定义的类__name和__main__都执行一遍。











  • 大小: 18.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics