python模块与类库(创建、导入与使用逻辑,子模块,if __name__ ==‘main‘: 语句, __name__,__dict__,__doc__,__file__等)

简介: python模块与类库(创建、导入与使用逻辑,子模块,if __name__ ==‘main‘: 语句, __name__,__dict__,__doc__,__file__等)

1. 模块

1.1 模块的简介

模块是指将一个完整的程序拆分成一个个的小模块。通过模块的组合,来搭建出一个完整的程序。模块化具有方便开发、方便维护、可以复用的优点。
模块(Module)是由一组类、函数与变量所组成的,模块文件的扩展名可能是.py(原始文本文件),也可能是.pyc(编译过的文本文件)。模块文件一般默认的python目录下的Lib文件夹里。


1.2 模块的创建

  • 在Python中一个py文件就是一个模块,在一个模块中引入外部模块,用的是import+模块名(模块名就是要导入py文件的文件名)。
  • 可以导入同一个模块多次,但是模块的实例只会创建一次。
  • import 模块名 as 模块别名 也是一种常用的写法
  • 在一个模块内部都有一个 __name__ 。通过它我们可以获取到模块的名字。
  • 这里以pycharm的操作为例。(不是pycharm 或者 文件目录弄不清的就把创建的模块文件放在lib文件夹里即可。)
    如我们先创建一个文件(下边我们把它称为原文件),再在当前该文件目录创建一个名为test1的模块,并写如如下代码:
    在这里插入图片描述
print('这是我的第一个模块')
print(__name__)   # __name__的输出结果是其所在的模块名test1


def fun():
    print('我要学python。')

然后~不要运行,在原文件内输入:

import test1

当时用import语句加载模块时,模块内的程序代码立刻被执行。

然后执行该文件
然后我们可以看到,test1被运行了(当然这个时候我们也可以调用test1模块里的fun()函数了,这里不再示例这个了。)
在这里插入图片描述


1.3 if name == ‘main’: 语句

if name == ‘main’: 是模块中很常用也很重要的一个语句。
当py文件test1直接运行(不是在其他文件中用import test1的方式),__name__就会默认为字符串’main’,该判断语句结果就为True。
如果导入到其他模块中,__name__就是文件名’test1’,该语句判断结果就为False,判断语句的代码块就不会被执行。
在test1中写入如下代码

print('这是我的第一个模块')
print(__name__)
a = 2


def fun():
    print('我要学python。')


class A():
    def __init__(self, name):
        self.name = name
        print(self.name)


if __name__ == '__main__':  
    a = A('云雀叫了一整天')

print(a)

在test1中运行test1结果如下:
在这里插入图片描述
输出的变量a的值为字符串"云雀叫了一整天"。

在原文件中导入test1,则结果为:
在这里插入图片描述
输出变量a的值为2,没有被改为字符串“云雀叫了一整天”。
对比以感受差别。


1.4 模块的使用

  • 访问模块中变量的语法: 模块名.变量名 如math.pi 获取到圆周率π的值
  • 访问模块中函数的语法: 模块名.函数名
  • 访问莫扩展对象的语法: 模块名.对象名
  • 也可以用引入模块中的部分内容的语法:
    from 模块名 import 对象,对象…
  • 再就是:from 模块名 import 变量 as 别名

2. 类库

2.1 类库介绍

类库(package)是由一组相同文件夹的模块组成的,也称“包”。每个类库的文件夹中至少含有一个__init__.py文件,类库可以包含子类库,子类库的文件夹应位于该文件夹下。子类库的文件夹中也至少含有一个__init__.py文件。
如email类库如图所示:
在这里插入图片描述
其中的mime是一个子类库,其组成如图所示:
在这里插入图片描述


2.2 类库的使用

导入类库中的模块:

import 类库.模块

文件夹里面如果包含了__init__.py文件就会识别为一个库,当其他文件进行导入这个库的时候就会运行__init__.py。
当加载一个类库时,此类库的子类库并不会随之加载,但是类库里的__init__文件会被执行。所以,如果想要随之加载,我们通常则必须在此类库的__init__.py文件中写入:

import 子类库1,子类库2,子类库3

这样的话,就可以使用子类库模块中的函数与变量等对象了。
在调用其之前,仍然是要加上前缀 模块名.,除非这个对象所在的模块a也在__init__里被写入import a 了,那可以不加前缀。不过一般而言,不加的话不一定正确,加了的话就总是没错的。

示例:
这是我们常用的统计分析库scipy,
它有一个字库stats,
子库stats里有一个模块也叫stats

from scipy import stats

我们用这个语句导入的是stats子库,不是stats模块。
使用的时候,如:

# 在求2项分布有p=0.5时进行100次试验成功20次的概率
stats.binom.pmf(20,100,0.5)

这里的stats指的是模块,因为stats模块还没有被执行,所以这里使用的时候要有前缀stats。


2.3模块的内置方法

builtins是python的内建模块,所谓内建模块就是你在使用时不需要import,在python启动后,在没有执行程序员编写的任何代码前,python会加载内建模块中的函数到内存中。
下面是一些__builtin__模块的内置方法,可以将这些方法用在模块或类库中:

  • m.__dict__ 显示模块的字典
import types
types.__dict__

输出了模块的字典信息:
在这里插入图片描述

  • m.__doc__ 显示模块的文本字符串
import types
types.__doc__

输出了模块的文本字符串信息:
在这里插入图片描述

  • m.__name__ 显示模块名称
import types
types.__name__

在这里插入图片描述

这个上边说到过,用法有讲究。。。

  • m.__file__ 显示模块的完整文件路径
import types
types.__file__

输出完整文件路径:
在这里插入图片描述


目录
相关文章
|
10月前
|
JSON 数据格式 开发者
Python 3.10 结构模式匹配:简化条件逻辑的利器
Python 3.10 结构模式匹配:简化条件逻辑的利器
397 91
|
11月前
|
人工智能 测试技术 编译器
Python语言从2.7到3.14的能力变化与演进逻辑
Python自2008年进入3.0时代以来,经历了持续演进与革新。十六年间,从语言设计、标准库优化到性能提升、虚拟机改进,Python不断适应人工智能、云计算和微服务等技术的发展需求。本文全面梳理了Python 3发布以来的重要变化,涵盖编程风格现代化、类型系统完善、类库生态调整、性能优化突破以及虚拟机技术创新等多个维度,展示了Python如何在保持简洁易用的同时,实现高效、稳定和可扩展的工程能力。未来,Python将在性能、类型安全和云原生等方面持续进化,进一步巩固其在现代软件开发中的核心地位。
721 30
|
9月前
|
数据采集 网络协议 API
协程+连接池:高并发Python爬虫的底层优化逻辑
协程+连接池:高并发Python爬虫的底层优化逻辑
|
11月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
818 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
Shell Python
[oeasy]python072_名字空间是怎么玩的_from_import_as_导入_namespace
本文介绍了Python中名字空间和模块导入的使用方法。主要内容包括: 1. **回忆上次内容**:回顾了之前导入系统模块(如`__hello__`、`time`)和自定义模块(如`my_file`),并介绍了如何导入和使用模块中的变量。 2. **从shell开始**:展示了如何在命令行中编辑和切换文件,以及如何通过`import`语句引入模块。 3. **修改oeasy.py**:演示了如何通过`import my_file`导入模块,并将模块中的`pi`赋值给本地变量`pi`。 4. **locals()函数**:解释了如何使用`locals()`查看当前作用域内的本地变量及其值。
224 9
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
364 8
|
开发框架 Java .NET
Python中main函数:代码结构的基石
在Python中,`main`函数是程序结构化和模块化的重要组成部分。它实现了脚本执行与模块导入的分离,避免全局作用域污染并提升代码复用性。其核心作用包括:标准化程序入口、保障模块复用及支持测试驱动开发(TDD)。根据项目复杂度,`main`函数有基础版、函数封装版、参数解析版和类封装版四种典型写法。 与其他语言相比,Python的`main`机制更灵活,支持同一文件作为脚本运行或模块导入。进阶技巧涵盖多文件项目管理、命令行参数处理、环境变量配置及日志集成等。此外,还需注意常见错误如全局变量污染和循环导入,并通过延迟加载、多进程支持和类型提示优化性能。
1106 0
|
Python
Python逻辑
Python逻辑
535 1
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
1053 5

推荐镜像

更多