python模块和包概念与使用

news2024/11/17 23:30:42

python模块和包概念与使用

Python模块与包的关键概念

在Python编程中,模块和包是代码组织和管理的基石。以下是关于Python模块与包的核心要点:

  1. 模块

    • 模块是一个包含Python代码的.py文件,它可以定义函数、类、变量等。
    • 通过导入模块,我们可以重用代码,将其组织成逻辑单元。
    • Python标准库为我们提供了大量预构建的模块,涵盖从数学计算到文件操作再到网络通信的广泛功能。
    • 我们还可以创建自定义模块,将相关的代码整合到一个文件中,并在其他项目或脚本中复用。
    • 包是一个包含多个模块的目录,它提供了一种组织代码层级结构的方式。
    • 包内通常含有一个名为__init__.py的特殊文件,这个文件的存在告诉Python该目录应被视为一个包。
    • 通过包,我们可以将相关的模块组合在一起,形成更大的功能单元,实现代码的模块化和封装。
  2. 导入模块和包

    • 使用import语句,我们可以导入模块或包。例如,import math将导入Python标准库中的math模块。
    • 导入模块后,我们可以调用其内部定义的函数、类和变量。例如,math.sqrt(16)将调用math模块中的sqrt函数。
    • 对于包,我们可以使用点号(.)来访问其内部的模块。例如,import mypackage.mymodule将导入名为mypackage的包中的mymodule模块。
  3. 避免命名冲突

    • 当导入多个模块或包时,可能会出现命名冲突。
    • 为了避免这种情况,我们可以使用as关键字为导入的模块或包指定一个别名。
    • 例如,import math as mmath模块导入并为其指定别名m,之后可以使用m.sqrt(16)来调用sqrt函数。

理解并熟练运用模块与包的概念,可以帮助我们构建更加清晰、可维护和可扩展的Python代码结构。

将文件夹加入到sys.path以便导入

比如自己手工写的一些小函数,可以放到/home/aistudio/work目录,然后将该文件夹加入到sys.path, 就可以自由的调用work目录里的包或者文件了。

# /home/aistudio/work/my_module.py  
  
def hello_world():  
    print("Hello, World!")

将work目录添加到sys.path并调用:

import sys  
  
# 将 /home/aistudio/work 添加到 sys.path  
work_dir = '/home/aistudio/work'  
if work_dir not in sys.path:  
    sys.path.append(work_dir)  
  
# 现在可以导入 /home/aistudio/work 下的模块了  
import my_module  
  
# 调用 my_module 中的函数  
my_module.hello_world()

删除或重新加载模块

可以直接使用del来删除已经导入的模块。比如上面的例子,如果我们执行del my_module ,那么再执行my_module.hello_world()就会报错:

name 'my_module' is not defined

这样再重新导入即可再次加载模块。

也可以使用imp进行模块的重新加载

import my_module
import imp
imp.reload(my_module)
my_module.hello_world()

导入子目录或上级目录

跟控制台/命令行路径操作相似,在python中使用'.'表示当前目录, '..'表示上级目录,因此可以这样分别导入上级/本目录和下级目录的库:

# 导入上级模块,假设为../up_module.py文件
import sys  
sys.path.append('..')  # 添加上级目录到 sys.path  
import up_module

# 导入本目录模块,假设为本目录my_module.py文件
import my_module

# 导入子目录模块,假设为fun1/my_module.py文件
import fun1.my_module

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1485344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

水经微图Web版1.6.0发布

让每一个人都有自己的地图! 水经微图(简称“微图”)新版已上线,在该版本中主要新增了点线面图层分组样式设置、图层排序并按序绘制、KML支持矢量符号的存储、KML支持态势标绘要素存储和新增历史地图文本样式等。 现在&#xff0…

Leetcoder Day27| 贪心算法part01

语言:Java/Go 理论 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 什么时候用贪心?可以用局部最优退出全局最优,并且想不到反例到情况 贪心的一般解题步骤 将问题分解为若干个子问题找出适合的贪心策略求解每一个子…

使用plasmo框架开发浏览器插件,注入contents脚本和给页面添加UI组件

plasmo:GitHub - PlasmoHQ/plasmo: 🧩 The Browser Extension Framework plasmo是一个开发浏览器插件的框架,支持使用react和vue等技术,而且不用手动管理manifest.json文件,框架会根据你在框架中的使用,自…

美团分布式 ID 框架 Leaf 介绍和使用

一、Leaf 在当今日益数字化的世界里,软件系统的开发已经成为了几乎所有行业的核心。然而,随着应用程序的规模不断扩大,以及对性能和可扩展性的需求不断增加,传统的软件架构和设计模式也在不断地面临挑战。其中一个主要挑战就是如…

SAP EC-CS如何实现自动抵消

SAP EC-CS 是SAP 比较早的合并方案,尽管后面有很多其他的方案作为替代,但 EC-CS 因为其成熟性,在集团合并单元不多的情况下,也可以作为一个不错的合并解决方案。可以说,会计报表合并一个核心就是实现抵消的处理&#x…

nginx------------缓存功能 ip透传 负载均衡 (六)

一、http 协议反向代理 (一)反向代理示例:缓存功能 缓存功能可以加速访问,如果没有缓存关闭后端服务器后,图片将无法访问,缓存功能默认关闭,需要开启。 ​ proxy_cache zone_name | off; 默认off #指明调…

2024全新手机软件下载应用排行、平台和最新发布网站,采用响应式织梦模板

这是一款简洁蓝色的手机软件下载应用排行、平台和最新发布网站,采用响应式织梦模板。 主要包括主页、APP列表页、APP详情介绍页、新闻资讯列表、新闻详情页、关于我们等模块页面。 地 址 : runruncode.com/php/19703.html 软件程序演示图:…

C语言中的字符魔法:大小写转换的艺术

引言 在C语言的世界里,字符处理是一项基础且重要的任务。字符作为编程中最基本的元素之一,承担着信息展示、数据交互等多重角色。特别是在处理文本信息时,字符的转换和识别显得尤为重要。大小写字母的转换就是其中一个常见的需求&#xff0c…

串及BF朴素查找算法(学习整理):

关于串的相关定义: 串:用‘ ’表示的字符序列空串:包含零个字符的串子串:包含传本身和空串的子串 eg: abc(,a,b,c,ab,bc,ac,abc)共7个:串的长度的阶乘1(空串)真子串:不包含自身的所…

linux安装matlab获取许可证

1.点击许可证 2. 3. 4. 4.主机ID 打开linux输入 /sbin/ifconfigether后边的就是 6.计算机登录名 打开linux输入 whoami7. 8. 9.

【已亲测有效】如何彻底删除nodejs,避免影响安装新版本

第一步开始菜单搜索uninstall node.js,点击之后等待删除(删除node_modules文件夹以及以下这些文件) 第二步手动删除nodejs下载位置的其他文件夹。(就是另外自己新建的两个文件夹node_cache和node_global) 到这里其实应…

LDR6328芯片:智能家居时代的小家电充电革新者

在当今的智能家居时代,小家电的供电方式正变得越来越智能化和高效化。 利用PD(Power Delivery)芯片进行诱骗取电,为后端小家电提供稳定电压的技术,正逐渐成为行业的新宠。在这一领域,LDR6328芯片以其出色的…

什么是VR数字文化遗产保护|元宇宙文旅

VR数字文化遗产保护是指利用虚拟现实(VR)技术来保护和传承文化遗产。在数字化时代,许多珍贵的文化遗产面临着自然衰退、人为破坏或其他因素造成的威胁。通过应用VR技术,可以以全新的方式记录、保存和展示文化遗产,从而…

C语言指针(4):函数在指针中的进阶应用

1、回调函数 回调函数就是⼀个通过函数指针调⽤的函数。函数参数的形式为函数指针类型。 当你把函数/函数的地址作为参数传递给相应函数是,如果这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用的&…

workstation 用途

一 workstation 用途 强大的桌面虚拟化 允许创造多种操作系统可以不用重启就跨不同操作系统进行操作可以提供隔离的安全环境 连接到vsphere 可以远程登陆服务器管理物理主机和虚拟主机任何时间都可登陆提高虚拟机效率 为任何平台开发和测试 1)借助一台单一本地…

【AI Agent系列】【MetaGPT多智能体学习】6. 多智能体实战 - 基于MetaGPT实现游戏【你说我猜】(附完整代码)

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第四篇笔记。今天我们来完成第四章的作…

【解决】虚幻导入FBX模型不是一个整体

问题: 现在有一个汽车的fbx模型,导入虚幻引擎,导入后变成了很多汽车零件模型。 解决: 把“合并网格体”勾选上,解决问题。

蓝桥杯(3.2)

1209. 带分数 import java.io.*;public class Main {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));static final int N 10;static int n, cnt;static int[…

装饰器模式:原来一直都在用

装饰器模式是一种结构型设计模式,它允许你动态地给一个对象添加一些额外的职责,而不需要使用子类来扩展功能。装饰器模式通过创建一个包装类来包裹原始类,然后在包装类中提供额外的功能,从而实现功能的动态添加,同时也…

【NR 定位】3GPP NR Positioning 5G定位标准解读(三)

目录 前言 5 NG-RAN UE定位架构 5.1 架构 5.2 UE定位操作 5.3 NG-RAN定位操作 5.3.1 通用NG-RAN定位操作 5.3.2 OTDOA定位支持 5.3.3 广播辅助信息支持 5.3.4 NR RAT相关定位支持 5.4 NG-RAN中与UE定位相关的元素功能描述 5.4.1 用户设备(UE) …