首页 > 编程语言 >【python基础之包介绍】---包

【python基础之包介绍】---包

时间:2023-12-17 14:45:49浏览次数:655  
标签:模块 之包 python py 绝对路径 --- 相对路径 file import

title:  【python基础之包介绍】---包
date:  2023-12-06  18:54:06 
updated: 2023-12-06 19:20:00
description:  【python基础之包】---包
cover: 
       https://home.cnblogs.com/u/dream-ze/

image

【1】什么是包

简介

  • 包是一个模块的集合,它可以将多个模块的功能组合到一起。
  • 包可以按照其功能和作用进行分类,方便用户查找和使用。
  • 包是在Python标准库中定义的一种特殊类型的模块,可以通过import语句来引入和使用。
  • Python的包分为标准库包和第三方库包。
    • 标准库包是Python内置的包,包含了一些基本的模块和函数,如os、sys、random等;
    • 第三方库包是第三方开发的包,通常提供了更加丰富和高级的功能。

【2】包结构

  • 包是Python程序中用于组织模块的一种方式。包是一个包含模块的目录,同时还可以包含其他子包。
  • 要创建一个包,我们只需要在目录中创建一个名为__init__.py的文件即可。
|-pakageName
	|-__init__.py
	|-moduleName1.py
	|-moduleName2.py
	|-...
  • 注意: 包路径下必须存在 __init__.py 文件。

【3】创建包

  • 我们创建一个 cal 的包,包中有一个计算器的 model ,结构如下:
|-package_test
	|-__init__.py
	|-calc.py
  • calc.py
def add(a, b):
    return a + b


def reduce(a, b):
    return a - b


def multiply(a, b):
    return a * b


def divide(a, b):
    return a / b

image

【4】直接使用包

(1)语法

  • Python 包的使用和模块的使用类似,下面是导入的语法:
import 包名.包名.模块名

(2)演示

  • 比如我们在 use_cal.py 中导入 calc.py
# 导入包
import package_test.calc
# 使用包的模块的方法
print(cal.calculator.add(1,2))

image

【5】详细使用包

(1)语法

  • 但是导入调用的时候报名比较长,这样就可以使用from ... import ...语句来简化一下。
from 包名.模块名 import 模块中的方法

(2)使用

  • use_cal.py 中导入 calculator.py
from package_test import calc #导包

print(calc.add(5,6)) #使用导出来的包里的模块方法

image

【6】制作包

(1)注册包

  • 在包下的__init__.py中注册相关变量
  • __init__.py
# 注意这里要用相对路径
# 从 calculator.py 中将需要导出的方法导入到这里
from .calc import add,reduce

(2)使用包

  • use_cal.py
# 将注册在 __init__.py 中的方法导入过来
from calc import add,reduce

# 使用包的模块的方法
print(add(2, 5))

image

【扩展】绝对路径和相对路径

  • 在Python中,路径分为相对路径和绝对路径。

【1】相对路径

  • 相对路径是相对于当前工作目录或当前脚本文件所在目录的路径。
  • 使用相对路径时,你指定的路径是相对于执行脚本的当前工作目录的。
# 例如,假设当前工作目录是 '/Users/username/projects',你可以使用相对路径如下:
relative_path = 'data/file.txt'

【2】绝对路径

  • 绝对路径是文件或目录在文件系统中的完整路径,不依赖于当前工作目录。
  • 使用绝对路径时,你指定的路径是从文件系统的根目录开始的。
# 例如,绝对路径可能是:
absolute_path = '/Users/username/projects/data/file.txt'

【3】案例说明

  • 假设有以下文件结构:
project/
|-- scripts/
|   |-- my_script.py
|-- data/
    |-- file.txt

(1)相对路径

  • 如果 my_script.py 中需要访问 file.txt,可以使用相对路径
# my_script.py
relative_path = '../data/file.txt'

with open(relative_path, 'r') as file:
    content = file.read()
    print(content)
  • 在这个例子中,'../data/file.txt' 是相对于 my_script.py 所在目录的相对路径。

(2)绝对路径

  • 如果使用绝对路径
# my_script.py
absolute_path = '/Users/username/projects/data/file.txt'

with open(absolute_path, 'r') as file:
    content = file.read()
    print(content)
  • 在这个例子中,'/Users/username/projects/data/file.txt' 是文件系统的绝对路径。

标签:模块,之包,python,py,绝对路径,---,相对路径,file,import
From: https://www.cnblogs.com/queryH/p/17909051.html

相关文章

  • 2023-2024-1 20232315 《网络空间安全导论》第六周学习总结
    一、教材学习内容总结近一周我预习了第六章应用安全基础,了解了相关知识,下面本章思维导图: 二、教材学习中的问题和解决过程问题一:虚拟化主要有哪些方式解决方法:百度搜索总结答案:虚拟化有很多实现方式,比如:根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟......
  • K-means聚类思想及其Python实现
    聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。“相似”这一概念,是利用距离标准来衡量的,我们通过计算对象与对象之间的距离远近来判断它们是否属于同一类别,即是否是同一个簇。聚类是一种无监督的学习(UnsupervisedLearn......
  • 开启摄像头(python)
    importcv2vc=cv2.VideoCapture(0)fps=20000size=(int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)),int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)))vw=cv2.VideoWriter('test2-7out.avi',cv2.VideoWriter_fourcc('X',�......
  • 无涯教程-Java - boolean startsWith(String prefix)函数
    判断字符串是否以prefix开头。booleanstartsWith-语法publicbooleanstartsWith(Stringprefix)这是参数的详细信息-prefix  - 要匹配的前缀。booleanstartsWith-返回值如果是以prefix开头,则返回true,否则为false。booleanstartsWith-示例importjava.io.*......
  • VUE框架指令语法与v-bind实现标签属性内部动态------VUE框架
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • Segmentation Transformer: Object-Contextual Representations for Semantic Segment
    SegmentationTransformer:Object-ContextualRepresentationsforSemanticSegmentation*Authors:[[YuhuiYuan]],[[XiaokangChen]],[[XilinChen]],[[JingdongWang]]Locallibrary初读印象comment::(OCRnet)聚焦于语义分割中的上下文聚合问题,利用物体类别的表......
  • 2023-2024-1 20232322罗上林 《网络》第六周学习总结
    教材学习内容总结教材学习中的问题和解决过问题一:不理解半虚化的含义问题一解决方案:询问百度得知半虚拟化和全虚拟化的区别是什么?二者一字之差,但是实质却大不相同。两者不同点在于通过是否改变操作系统内核设置,目的都是为了实现虚拟化。一般Xen虚拟机包含了完全虚拟化(fullvir......
  • 2023-2024-1 20231417 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231417《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标《C语言程序设计》第11章作业正文 https://www.......
  • 2023-2024-1 20231403 《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业)这个作业的目标自学《C语言程序设计》第11章作业正文https://www.cnblogs.com/lsrmy/p/17908985.html教材学......
  • Vue学习计划-Vue2--VueCLi(二)vuecli脚手架创建的项目内部主要文件分析
    1.文件分析1.补充:什么叫单文件组件?一个文件中只有一个组件vue-cli创建的项目中,.vue的文件都是单文件组件,例如App.vue2.进入分析1.package.json:项目依赖配置文件:如图,我们说主要的属性:name:项目的名称version:项目版本scripts:脚本入口serve:启动项目命......