Python3.4里面__name和__main__的作用

[b][color=green][size=large]在python的代码里我们经常会看到这样两个片段,__name__和__main__那么代表什么意思呢?

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

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



[b][color=olive][size=large]在cmd下直接运行,打印结果如下:[/size][/color][/b]

[img]http://dl2.iteye.com/upload/attachment/0100/8195/f556ec1e-5863-3c38-a7e8-5f003e55e1fb.jpg[/img]


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

Process finished with exit code 0



[b][color=olive][size=large]下面看下如何在python的里面,测试这个区别:[/size][/color][/b]



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();


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

Process finished with exit code 0



[b][color=green][size=large]通过上面这个例子,我们能够看出来,在一个py文件里的多个类也是可以定义自己的__name__和__main__如果我们没有明确指定是那个类的方法,那么执行这个文件导入模块时,就会把这个py下所有定义的类__name和__main__都执行一遍。[/size][/color][/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值