python中模块对象__name__

简介: 【6月更文挑战第12天】

image.png
在Python中,每个模块都有一个内置的属性 __name__。这个属性是一个字符串,它表示模块的名字。这个属性在模块被导入到其他程序中或者作为主程序运行时会有不同的值。

1. 当模块被直接运行时

如果模块是直接被Python解释器运行的(即作为主程序),那么 __name__ 的值就会被设置为 '__main__'

例如,如果你有一个名为 my_module.py 的文件,并且你直接运行它(比如通过命令行 python my_module.py),那么在这个模块内部的 __name__ 的值就是 '__main__'

2. 当模块被导入到其他程序中时

如果模块是被其他Python程序导入的,那么 __name__ 的值就会是模块的名字(不带 .py 后缀)。

例如,如果你有一个名为 my_module.py 的文件,并且你在另一个Python文件中通过 import my_module 导入了它,那么在 my_module.py 文件内部的 __name__ 的值就是 'my_module'

使用场景

这个特性经常被用来编写既可以作为主程序运行,也可以被其他程序导入的模块。通过检查 __name__ 的值,模块可以确定自己是作为主程序运行还是被其他程序导入,从而执行不同的代码。

例如:

# my_module.py

def my_function():
    print("Function was called!")

if __name__ == '__main__':
    print("Module is being run directly")
    my_function()
else:
    print("Module has been imported into another module")

如果你直接运行 my_module.py,输出会是:

Module is being run directly
Function was called!

但是如果你从另一个Python文件中导入 my_module,输出只会是:

Module has been imported into another module
目录
相关文章
|
4天前
|
Python
【Python】 已解决:NameError: name ‘python‘ is not defined
【Python】 已解决:NameError: name ‘python‘ is not defined
19 8
|
5天前
|
数据安全/隐私保护 Python
【Python】已解决:urllib模块设置代理ip
【Python】已解决:urllib模块设置代理ip
10 2
【Python】已解决:urllib模块设置代理ip
|
4天前
|
运维 数据安全/隐私保护 Python
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
Python基于telnetlib模块实现交换机全面巡检自动化运维项目
37 14
|
1天前
|
Python
|
2天前
|
物联网 Java 调度
Python中asyncio模块的实际使用
celery和asyncio写代码都差不多,但asycio用起来更简单,更适用于网络并发请求。如果用于做耗时任务处理也可以,针对如果耗时任务只有一个,明显用celery把耗时任务转到后台处理更为合适。
|
3天前
|
机器学习/深度学习 数据采集 安全
Python中的random模块及相关模块详解
随机函数是计算机科学中一个基础而又重要的概念,random模块为我们提供了丰富的功能来处理随机性。 通过深入学习和应用random模块以及numpy、secrets和matplotlib等相关模块,我们可以更好地处理各种随机性相关的问题。 无论是简单的随机数生成,还是复杂的随机分布和安全随机数,Python都为我们提供了强大的工具和库,使我们能够在各种应用场景中灵活应对随机性需求。
|
4天前
|
IDE 开发工具 Python
【Python】已解决:pip安装第三方模块(库)与PyCharm中不同步的问题(PyCharm添加本地python解释器)
【Python】已解决:pip安装第三方模块(库)与PyCharm中不同步的问题(PyCharm添加本地python解释器)
21 0
|
4天前
|
数据采集 前端开发 测试技术
【Python】已解决:(最新版selenium框架元素定位报错)NameError: name ‘By’ is not defined
【Python】已解决:(最新版selenium框架元素定位报错)NameError: name ‘By’ is not defined
10 0
|
4天前
|
Python
【Python】已解决:(pandas读取DataFrame列报错)raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)
【Python】已解决:(pandas读取DataFrame列报错)raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)
13 0
|
4天前
|
开发者 Python
【Python】已解决:NameError: name ‘reload’ is not defined
【Python】已解决:NameError: name ‘reload’ is not defined
10 0