24.从入门到精通:__name__属性 dir() 函数 标准模块 包 从一个包中导入*

简介: 24.从入门到精通:__name__属性 dir() 函数 标准模块 包 从一个包中导入*

__name__属性

在Python中,每个模块(module)都有一个内置的属性name,用于表示模块的名称。这个属性有两种不同的取值方式:

  • 如果模块是直接被执行的,那么name属性的值为’main’; 如果模块是被导入到其他模块中的,那么name属性的值为模块的名称。

这个属性通常用于判断模块是直接被执行还是被导入到其他模块中。例如,可以使用以下代码来判断当前模块是否直接被执行:

if __name__ == '__main__':
    # do something

这段代码的意思是,如果当前模块的name属性的值为’main’,那么执行后面的代码块。这样可以避免在模块被导入到其他模块中时,不必要的代码也被执行。

需要注意的是,name属性是一个内置属性,不应该被修改。另外,Python中还有许多其他的内置属性,例如doc、file等等,可以通过dir()函数查看模块支持的所有属性和方法。


dir() 函数

dir()函数是Python内置函数之一,用于列出指定对象的所有属性和方法。如果不传入任何参数,则会列出当前作用域内的所有名称。
下面是一些常见的dir()函数的用法:

列出模块中的所有名称
import module_name
dir(module_name)

这种方式会列出指定模块中的所有名称,包括变量、函数、类等等。

列出对象的所有属性和方法
obj = object()
dir(obj)

这种方式会列出指定对象的所有属性和方法,包括内置属性和方法以及自定义属性和方法。

列出当前作用域内的所有名称
dir()

这种方式会列出当前作用域内的所有名称,包括变量、函数、类等等。

需要注意的是,dir()函数只会列出对象的公共属性和方法,而不会列出私有属性和方法。私有属性和方法以双下划线开头,例如__name__、__init__等等。


标准模块

Python标准库是Python自带的一组模块,它们包含了各种常用的工具和功能,可以帮助我们更加高效地编写Python程序。以下是一些Python标准库中常用的模块:

os模块:提供了与操作系统交互的函数,例如文件操作、进程管理等。

sys模块:提供了与Python解释器交互的函数,例如获取命令行参数、修改sys.path等。

datetime模块:提供了日期和时间的处理函数。

random模块:提供了生成随机数的函数。

re模块:提供了正则表达式的处理函数。

json模块:提供了JSON格式的编码和解码函数。

urllib模块:提供了URL处理函数,例如发送HTTP请求、处理URL编码等。

socket模块:提供了网络编程相关的函数,例如创建套接字、发送和接收数据等。

threading模块:提供了多线程编程相关的函数,例如创建线程、线程同步等。

subprocess模块:提供了执行外部命令和程序的函数。


以上是Python标准库中的一些常用模块,它们可以帮助我们更加高效地编写Python程序。在使用这些模块时,我们只需要使用import语句将它们导入到当前的命名空间中即可。

除了Python标准库外,还有许多第三方库可以帮助我们解决各种问题,例如NumPy、Pandas、Matplotlib、Scikit-learn等。这些库可以通过pip命令安装,使用方法与Python标准库类似。


在Python中,包(Package)是一种组织Python模块的方式。包是一个文件夹(目录),里面包含了一些Python模块和一个名为__init__.py的特殊文件。

init.py文件的作用是将一个文件夹变成一个Python包,可以为空文件,也可以包含Python代码,用于初始化包的内容。 包的主要作用是将模块组织成一个层次结构,方便管理和使用。例如,可以将所有与数学计算相关的模块放在一个名为math的包中,然后在其他模块中导入这个包,就可以使用其中的模块了。

使用包的基本语法如下:
import package_name.module_name
或者:
from package_name import module_name

其中,package_name表示包的名称,module_name表示模块的名称。

需要注意的是,当使用import语句导入包时,实际上是导入了该包下的__init__.py文件,因此__init__.py文件中的代码会被执行。如果不希望执行__init__.py文件中的代码,可以在__init__.py文件中添加如下代码:

all = []


这样可以清空__all__列表,防止import *语句导入所有模块。


从一个包中导入*

**在Python中,我们可以使用import语句导入一个包或模块,并使用其中的函数、类或变量。如果我们想要导入一个包中的所有模块,可以使用from … import *语句。例如:

from my_package import ***


1.这个语句会将my_package包中所有模块的函数、类和变量导入到当前的命名空间中。但是,这种导入方式不太推荐使用,因为它会导致命名冲突和不必要的内存消耗。如果我们只需要导入包中的部分模块,应该使用from

… import语句,并指定需要导入的模块。例如: from my_package import module1, module2

2.这种方式可以避免命名冲突,并且只导入需要的部分,提高代码的可维护性和可读性。

需要注意的是,如果一个模块中定义了__all__变量,那么在使用from … import

*语句导入时,只会导入__all__变量中指定的函数、类和变量。例如:

__all__ = ['function1', 'class1']

在这个示例中,只有function1和class1会被导入到当前的命名空间中。 总之,尽管from … import

*语句可以方便地导入一个包中的所有模块,但是它会导致一些问题,因此不建议使用。我们应该使用from … import语句,并指定需要导入的模块,以提高代码的可维护性和可读性。


相关文章
|
8月前
|
SQL Java 数据库连接
MyBatis 分页机制详解:从 RowBounds 到物理分页实践
MyBatis分页策略解析:逻辑分页(RowBounds)将全量数据加载至内存,仅适用于小数据量;物理分页通过SQL层面限制返回数据,性能更优。推荐使用PageHelper插件,自动适配数据库方言,一行代码实现高效分页,避免OOM风险,提升系统稳定性。
|
11月前
|
存储 运维 安全
阿里云服务器2核4G与4核8G配置解析:实例规格、价格及选择指南
阿里云服务器2核4G和4核8G配置凭借其均衡的性能与性价比,成为中小企业及开发者群体的热门选择。通用算力型u1实例2核4G5M带宽80G ESSD Entry云盘特惠价199元1年,个人用户最低531.79元1年,4核8G配置价格最低的是通用算力型u1实例,活动价格为955.58元1年起,除此之外,还有计算型c7、c9i、c8y等计算型实例有2核4G与4核8G配置可选。具体配置还需要看想要购买的云服务器实例规格和配置及带宽大小。本文将结合2025年最新活动价格,深度解析阿里云服务器2核4G与4核8G配置的实例规格、适用场景及选择策略,以供参考。
|
存储 人工智能 数据管理
DeepSeek生成的图片如何导出使用
本文详解DeepSeek图片导出的三大技术路径:网页下载、API集成与本地部署,并提供元数据管理、命名规范、格式选择等最佳实践,助力开发者高效利用AI绘图成果。
910 0
|
6月前
|
数据采集 Java API
Python 异步编程实战指南:从零构建高并发 Web 爬虫与 API 服务
本文系统讲解 `asyncio` 核心原理与实战:从HTTP爬虫、FastAPI异步API到限流、重试、超时熔断;涵盖协程/Task/事件循环三要素、常见坑点及Python 3.11+新特性(TaskGroup、timeout等),助你轻松实现10–100倍I/O性能提升。
529 1
|
8月前
|
监控 新能源 人机交互
探索热辐射:红外发射率的调控艺术与应用(隐身篇)
红外辐射无处不在,物体通过热辐射在空气中传播红外线,而8~14μm等“大气窗口”波段可被探测。红外热成像仪利用温度差异生成图像,广泛应用于军事侦察。实现红外隐身需降低辐射强度,主要途径包括调控发射率、控制温度及阻隔传播。低发射率涂层、隔热材料、相变材料(如VO₂)、超材料与仿生设计等技术不断发展,推动智能、多频谱兼容隐身材料研发。EM10便携式测量仪实现3-5μm与8-14μm双波段同步高精度检测,助力材料研发与现场质量监控,促进红外隐身技术向高效、协同、实用化方向迈进。
|
编译器 C++ 开发者
C++一分钟之-C++20新特性:模块化编程
【6月更文挑战第27天】C++20引入模块化编程,缓解`#include`带来的编译时间长和头文件管理难题。模块由接口(`.cppm`)和实现(`.cpp`)组成,使用`import`导入。常见问题包括兼容性、设计不当、暴露私有细节和编译器支持。避免这些问题需分阶段迁移、合理设计、明确接口和关注编译器更新。示例展示了模块定义和使用,提升代码组织和维护性。随着编译器支持加强,模块化将成为C++标准的关键特性。
1462 3
|
10月前
|
数据采集 缓存 监控
阿里云CDN流量超额怎么办?
使用阿里云CDN时,流量超额易致额外费用。本文教你三招应对:实时监控并设置报警、优化配置减少消耗、购买流量包降低成本。常见原因包括访问突增、配置不当或网络攻击。
|
缓存 自然语言处理 算法
大模型意图识别工程化实践
本文重点介绍大模型意图识别能力在智能电视核心链路中的落地过程和思考,对比了基础模型、RAG 、以及7b模型微调三种方案的优缺点。
6055 122
|
11月前
|
存储 人工智能 达摩院
|
Web App开发 关系型数据库 MySQL
历经26个月开发,Debian 9正式发布
你可以在公告中找到更新软件更全面的列表。 最后,Debian 9为64位小字节硬件添加了mips64el结构支持,但移除了对32位Motorola/IBM PowerPC (powerpc)的支持。

热门文章

最新文章