__name__ and “__main__“


链接: 转载和参考链接.
链接: 转载和参考链接.

前言

经常在代码中看到
if __name__ =="__main:
    执行体

但是又不懂是什么意思?
这里,就出现了,我们此处所要解释的

name__和__main

一、name

__name__是当前模块的一个属性,属性名称的前后各有两个_修饰,表明它是一个内置属性(也称内置变量)

二、main?

"main"则是一个字符串对象,“xx”,一对双引号是创建字符串对象的快捷方式

三、name=="main"写在一起表示什么?

表示当前模块的__name__属性的值是否等于字符串"main",如果__name__的值是"main"则返回True、如果__name__的值不是"main",则返回False

四、__name__属性的值什么时候等于"main"呢?

如果当前模块是程序的入口模块(也称顶级模块、脚本文件),则当前模块的__name__属性的值是"main"

eg:
1.定义一个python脚本文件,(caculate_salary.py)
2.执行caculate_salary.py内部的语句块
3. 此时该py文件属性__name__是main

# !/usr/bin/python
# -*- coding: utf-8 -*-
class Student:
    def yearsalary(self):
        print("计算年薪")
    def daysalary(self):
        print("计算日薪")
a=Student()
a.daysalary()
a.yearsalary()
print(__name__)#打印出当前caculate_salary的属性名

##输出结果###
计算日薪
计算年薪
__main__

五、__name__属性的值不是"main"时,会是什么?

如果当前模块不是程序的入口模块(顶级模块),__name__属性的值是"当前模块名",说明当前模块是被其他模块导入时运行的!
eg: 导入其他模块(import math)

#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
print(math.__name__)

##########输出结果#########
math

name=="main"用来做什么?
1、做脚本:如果当前模块是程序的入口模块(顶级模块),则是作为程序执行的入口,此时的模块文件作为脚本独立运行

2、做测试:如果当前模块不是入口模块,我们也可以利用模块作为程序的入口特性做测试工作,在 if name == "main"修饰的代码块中调用一些测试代码!

六、总结

1、每个Python模块(.py结尾的Python模块文件)都包含内置变量__name__(也称内置属性)

2、模块作为程序入口执行时,即作为脚本执行时,__name__的值等于"main"

3、模块import到其他模块执行时,__name__的值等于"模块名"(注意:不包含模块文件的后缀.py)

4、模块作为程序入口执行时,即作为脚本执行时,name == 'main’的结果为True,此时在if代码块中的语句可以运行!

5、模块import到其他模块执行时,name == 'main’的结果为False,因为此时__name__的值为模块名称(不含.py),此时在if代码块中的语句并不会执行!

# !/usr/bin/python
# -*- coding: utf-8 -*-
class Student:
    def yearsalary(self,salary):
        print("计算年薪:",salary*12)
    def daysalary(self,salary):
        print("计算日薪:",salary/22)
if __name__=="__main__":
    print("代码测试中")
    a=Student()
    a.daysalary(22000)
    a.yearsalary(22000)
else:
    print("导入到其他文件中")
import moduleB2

####运行结果####
导入到其他文件中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值