Python模块和包

2023-10-31

目录

⼀. 模块

1.1. 导⼊模块

1.1.1 导⼊模块的⽅式

1.1.2 导⼊⽅式详解

 1.2. 制作模块

1.2.1 定义模块

1.2.2 测试模块

1.2.3 调⽤模块

1.2.4 注意事项

1.3. 模块定位顺序

1.4. __all__

⼆. 包

2.1 制作包

2.1.1 快速体验

2.2 导⼊包

2.2.1 ⽅法⼀

⽅法⼆


⼀. 模块

Python 模块 (Module) ,是⼀个 Python ⽂件,以 .py 结尾,包含了 Python 对象定义和 Python 语句。
模块能定义函数,类和变量,模块⾥也能包含可执⾏的代码。
模块分类分为三种:
(1) 内置标准模块 (又称标准库),执行help('modules')查看所有python自带模块列表。
(2) 第三方开源模块 ,可通过“pip install 模块名”联网安装。  
(3) 自定义模块 ,即创建了一个.py文件,就可以称之为模块,可以在另一个程序里导入。
pip是官方推荐的安装和管理Python包的工具,用其来下载和管理Python非常方便。
pip最大的优势是它不仅能将需要的包下载下来,而且会把相关依赖的包也下载下来。使用pip命令可完成扩展库的安装、升级、卸载等操作。
pip工具常用命令

1.1. 导⼊模块

1.1.1 导⼊模块的⽅式

  • import 模块名【as 别名】
  • from 模块名 import 功能名
  • from 模块名 import *
  • from 模块名 import 功能名 as 别名

1.1.2 导⼊⽅式详解

import
语法
# 1. 导⼊模块
import 模块名
import 模块名 1 , 模块名 2 ...
# 2. 调⽤功能
模块名 . 功能名 ()

体验

import math
print ( math . sqrt ( 9 )) # 3.0

from..import..        可以减少查询次数,提高执行速度

语法

from 模块名 import 功能1, 功能2, 功能3... 

体验

from math import sqrt
print ( sqrt ( 9 ))

from .. import *        谨慎使用

语法
from 模块名 import *
体验
from math import *
print ( sqrt ( 9 ))

as定义别名

语法
# 模块定义别名
import 模块名 as 别名
# 功能定义别名
from 模块名 import 功能 as 别名

体验

# 模块别名
import time as tt

tt.sleep(2)
print('hello')

# 功能别名
from time import sleep as sl
sl(2)
print('hello')

可以使用dir函数查看任意模块中所有的对象列表,如果调用不带参数的dir()函数,则返回当前所有名字列表。

可以使用help函数查看任意模块或函数的使用帮助。 

模块的导入顺序

在需要导入的模块类型较多时,一般遵守如下导入顺序:    

(1)导入Python标准库模块,如sys、os、math等;    

(2)导入第三方库,如numpy、Pandas、Matplotlib等;    

(3)导入自己开发的模块,即编辑好.py文件。

python对象

常用内置对象

 1.2. 制作模块

Python 中,每个 Python ⽂件都可以作为⼀个模块,模块的名字就是⽂件的名字。 也就是说⾃定义模 块名必须要符合标识符命名规则。

1.2.1 定义模块

新建⼀个 Python ⽂件,命名为 my_module1.py ,并定义 testA 函数。
def testA ( a , b ):
print ( a + b )

1.2.2 测试模块

在实际开中,当⼀个开发⼈员编写完⼀个模块后,为了让模块能够在项⽬中达到想要的效果,这个开发⼈员会⾃⾏在py ⽂件中添加⼀些测试信息 . ,例如,在 my_module1.py ⽂件中添加测试代码。

def testA(a, b):

print(a + b)

testA ( 1 , 1 )
此时,⽆论是当前⽂件,还是其他已经导⼊了该模块的⽂件,在运⾏的时候都会⾃动执⾏ testA 函数的 调⽤。
解决办法如下:
def testA ( a , b ):
print ( a + b )
# 只在当前⽂件中调⽤该函数,其他导⼊的⽂件内不符合该条件,则不执⾏ testA 函数调⽤
if __name__ == '__main__' :
testA ( 1 , 1 )

1.2.3 调⽤模块

import my_module1
my_module1 . testA ( 1 , 1 )

1.2.4 注意事项

如果使⽤ from .. import .. from .. import * 导⼊多个模块的时候,且模块内有同名功能。当调
⽤这个同名功能的时候,调⽤到的是后⾯导⼊的模块的功能。
体验
# 模块 1 代码
def my_test ( a , b ):
print ( a + b )
# 模块 2 代码
def my_test ( a , b ):
print ( a - b )
# 导⼊模块和调⽤功能代码
from my_module1 import my_test
from my_module2 import my_test
# my_test 函数是模块 2 中的函数
my_test ( 1 , 1 )

1.3. 模块定位顺序

当导⼊⼀个模块, Python 解析器对模块位置的搜索顺序是:
1. 当前⽬录
2. 如果不在当前⽬录, Python 则搜索在 shell 变量 PYTHONPATH 下的每个⽬录。
3. 如果都找不到, Python 会察看默认路径。 UNIX 下,默认路径⼀般为 /usr/local/lib/python/
模块搜索路径存储在 system 模块的 sys.path 变量中。变量⾥包含当前⽬录, PYTHONPATH 和由安装过程决定的默认⽬录。
注意
⾃⼰的⽂件名不要和已有模块名重复,否则导致模块功能⽆法使⽤
使⽤ from 模块名 import 功能 的时候,如果功能名字重复,调⽤到的是最后定义或导⼊的功
能。

1.4. __all__

如果⼀个模块⽂件中有 __all__ 变量,当使⽤ from xxx import * 导⼊时,只能导⼊这个列表中的元
素。
my_module1 模块代码
__all__ = [ 'testA' ]
def testA ():
        print ( 'testA' )
def testB ():
        print ( 'testB' )

导⼊模块的⽂件代码

from my_module1 import *
testA ()
testB ()

.

包将有联系的模块组织在⼀起,即放到同⼀个⽂件夹下,并且在这个⽂件夹创建⼀个名字
__init__.py ⽂件,那么这个⽂件夹就称之为包。

2.1 制作包

[New] — [Python Package] — 输⼊包名 — [OK] — 新建功能模块 ( 有联系的模块 )
注意:新建包后,包内部会⾃动创建 __init__.py ⽂件,这个⽂件控制着包的导⼊⾏为。

2.1.1 快速体验

1. 新建包 mypackage
2. 新建包内模块: my_module1 my_module2
3. 模块内代码如下
# my_module1
print ( 1 )
def info_print1 ():
print ( 'my_module1' )
# my_module2
print ( 2 )
def info_print2 ():
print ( 'my_module2' )

2.2 导⼊包

2.2.1 ⽅法⼀

import 包名 . 模块名
包名 . 模块名 . ⽬标

体验

import my_package . my_module1
my_package . my_module1 . info_print1 ()

⽅法⼆

注意:必须在 __init__.py ⽂件中添加 __all__ = [] ,控制允许导⼊的模块列表。 

from 包名 import *
模块名 . ⽬标

体验

from my_package import *
my_module1 . info_print1 ()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python模块和包 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 异常(exception)

    异常 什么是异常 程序在运行过程中发生的意外情况 称之为异常 除数为0 数组小标越界 异常是一种信号 用于调用者传递信息 表示程序发生了意外情况 程序运行时一旦出现了异常 将会导致程序立即终止 异常之后的代码都无法继续执行 那么为了保持程序
  • 酒令

    劝酒者起身敬酒 被劝者会说 屁股一抬 喝了重来 意让劝酒者再喝一个 此时劝酒者应对 屁股一动 表示尊重 男人不喝酒 交不到好朋友 感情深一口闷 感情浅舔一舔 女士劝酒 激动的心 颤抖的手 我给领导到杯酒 领导不喝嫌我丑 女士和领导碰杯 领导
  • 鼠标一离开导航菜单,二级菜单就隐藏,移不到二级菜单

    项目场景 提示 这里简述项目相关背景 例如 项目场景 示例 网站右侧导航 无法移入二级菜单 鼠标移出一级菜单 二级内容立刻消失 从而鼠标无法移入二级内容区域 类似CSDN官网右侧 鼠标hover到二维码图标后 显示左侧关注公众号和下载APP
  • C语言中几种输入方式

    当我们输入一串字符或者数字时 需要一种标志作为输入结束的标志 所以我总结了以下几种 1 输入一串字符串以回车键作为输入结束的标志 char ch while ch getchar n 例1 输入一行字符 分别统计出其中英文字母 空格 数字
  • 感应(异步)电机磁场定向控制速度环PI控制参数设计

    电机控制系列文章 感应 异步 电机磁场定向控制MATLAB Simulink建模 感应 异步 电机磁场定向控制电流环PI控制参数设计 目录 电机控制系列文章 前言 一 速度环开环传递函数 二 速度环开环传递函数零极点配置 三 速度环闭环性能
  • 【Twinkle】简历小问题

    在制作简历的时候 很多人都把心思放在如何撑满一张纸 当然 这确实很重要 但是在重内容的同时 我们容易忽略一些小问题 而这些小问题在HR的眼中其实是基本功的体现 更甚 这些小问题反倒是最扎眼的 比如字体 字号 行间距等 这些都是超脱于内容之外
  • [1199]npm常用命令

    文章目录 npm常用的安装命令 npm镜像源如何设置 npm将软件包安装到哪里 npx命令 npm文档 https docs npmjs com cli install npm常用的安装命令 npm i 就是npm install 简写 n
  • STL迭代器失效的场景总结

    一 序列式容器迭代器失效的场景 序列式容器以vector为例 分别有以下情况会失效 1 push back 使迭代器失效 在容器末尾添加一个元素 如果容器有剩余空间 capacity gt size 则直接添加新元素到容器尾部 此时 原迭代
  • 【产品经理实战项目系列教程】笔记004:产品经理应该具备的能力及如何学习;

    一 产品经理应该具备的能力 1 产品设计的能力 设计功能 业务 app 网站 小程序 后台等等 2 文档撰写 3 逻辑思维能力 需要在实战项目中不断的锻炼 激发自己的思考能力 4 业务梳理能力 难点在于梳理清楚业务与业务之间的闭环 5 沟通
  • flashFXP乱码解决

    菜单 命令 原始命令 输入 opts utf8 off 回车 或点确定 再刷新服务端的目录列表 即正常显示
  • 记一次Oracle RAC一节点重启后出现故障的处理

    因为存储的相关操作 客户需要手动重启rac节点 然而 这个重启导致了接下来的事故 由于是远程跟我沟通 我回复rac环境下可以重启一个节点 客户就自信重启了 出现的故障如下所示 grid hxdb01 srvctl start nodeapp
  • 使用VUE3.0版本搭建H5模板

    使用VUE3 0版本搭建H5模板 仓库地址 有需要的可以参考参考 https gitee com young frivolous vue3 app template tree master 为了方便每次写项目都要去搭建一个框架 今天使用vu
  • vue 实现鼠标移入移出表格,显示影藏图标, 并弹出提示内容

    效果 1 Table代码
  • NLP task2 _ 自然语言处理中N-Gram模型的Smoothing算法

    使用N Gram模型时的数据平滑算法 背景 为什么要做平滑处理 零概率问题 就是在计算实例的概率时 如果某个量x 在观察样本库 训练集 中没有出现过 会导致整个实例的概率结果是0 在文本分类的问题中 当一个词语没有在训练样本中出现 该词语调
  • 出圈

    题目描述 设有n个人围坐一圈并按顺时针方向从1到n编号 从第1个人开始进行1到m的报数 报数到第个m人 此人出圈 再从他的下一个人重新开始1到m的报数 如此进行下去直到所剩下一人为止 输入 输入多行 每行2个数 分别表示n和m 输出 计算每
  • AntDesign技术指南:构建优雅的前端界面

    引言 AntDesign是一款优秀的前端UI组件库 它提供了丰富的组件和功能 帮助我们快速构建漂亮 易用的前端界面 本篇博客将详细介绍AntDesign的使用方法和技巧 并展示完整的代码示例 无论你是初学者还是有经验的开发者 本篇博客都将为
  • ISAKMP报文解密

    使用wireshark抓包 No Time Source Destination Protocol Length Info 3 1 735352000 192 168 1 102 192 168 1 101 ISAKMP 878 IKE S
  • react中使用useEffect模拟componentDidUpdata(使 useEffect 在渲染时不执行,只在数据变更时执行)

    背景介绍 在列表搜索条件变化时 需要保存搜索条件 但是保存搜索条件这个方法不需要在组件挂载时执行 即如何使 useEffect 在渲染时不执行 只在数据变更时执行 即模拟类组件的componentDidUpdata 问题描述 如果是使用监听
  • Spring_Accepting request input

    Spring MVC provides several ways that a client can pass data into a controller s handler method These include 1 Query pa
  • Python模块和包

    目录 模块 1 1 导 模块 1 1 1 导 模块的 式 1 1 2 导 式详解 1 2 制作模块 1 2 1 定义模块 1 2 2 测试模块 1 2 3 调 模块 1 2 4 注意事项 1 3 模块定位顺序 1 4 all 包 2 1 制