网站首页 > 技术文章 正文
有时,我们希望在py文件中导入其他py文件中的函数或类等功能,这样就可以将自己编写的代码进行重复使用,并且可以规范化积累自己的代码,成为自己代码学习的重要成果。当然,可以将这些模块化的代码共享出来,供大家一起学习和使用,也是一件非常有成就的事。
下面就来具体地、细致地、实操性的讲讲如何来建立和使用自定义的模块包。
一、建立自定义py文件
例如,我们使用python的IDLE代码编辑器(文件模式下),写了一个简化的类ReadCSV,这个类的功能就是实现可以读取不同编码的CSV文件:
将以上代码保存为read.py文件,然后在Python的安装路径的Lib/site-packages/下面新建一个文件夹myread,即Lib/site-packages/myread/,文件夹myread就是python的模块或者包。
C:\Users\fqbfqb\AppData\Local\Programs\Python\Python310\Lib\site-packages\myread
之后,将文件read.py拷贝到文件夹myread里面,再在文件夹myread里面新建一个名称为‘__init__.py’文件,该文件的内容可以为空。文件夹myread的内容如下所示:
二、使用文件read.py里面的功能
那么,我们如何使用自定义模块myead里面的功能呢?
首先,我们重启下python的IDLE,在命令行模式下,使用from myread.read import ReadCSV,即下图所示,也就是从myread文件夹的read.py文件导入ReadCSV类:
from myread.read import ReadCSV
r = ReadCSV('d:/fqb/1.csv')
r.encodings
['utf-8', 'ansi', 'gbk']
当然,也可以直接导入文件夹myread,即import myread,然后这样使用类:
import myread
r = myread.read.ReadCSV('d:/fqb/1.csv')
r.encodings
['utf-8', 'ansi', 'gbk']
三、修改类的属性
比如,我们要增加类ReadCSV的属性encodings的元素:
from myread.read import ReadCSV
r = ReadCSV('d:/fqb/1.csv')
r.get_encodings()
['utf-8', 'ansi', 'gbk']
r.mend_encodings('utf-8-sig')
r.get_encodings()
['utf-8', 'ansi', 'gbk', 'utf-8-sig']
r2 = ReadCSV('d:/fqb/2.csv')
r2.get_encodings()
['utf-8', 'ansi', 'gbk', 'utf-8-sig']
我们看到,类ReadCSV有2个实例对象r和r2,实例r修改了类的属性,那么实例r2的属性也同步修改了,也就是类的属性在多个实例之间是共享的,不是相互独立的。
但是,当我们关闭IDLE,再次导入ReadCSV类的时候,类的属性encodings的值还是以前的值,即['utf-8', 'ansi', 'gbk'],而不是新增后的值。这说明,类的属性的值的修改,只在当前的运行时是有效的,无法持久化保存下来。要想持久化修改,必须更新模块myread或者更新模块myread里面的read.py文件。
猜你喜欢
- 2025-05-14 Python中的模块 (Module)和包 (Package)
- 2025-05-14 python中的模块、库、包有什么区别?
- 2025-05-14 用Python快速创建N个Excel文件
- 2025-05-14 Python NumPy库的安装和使用
- 2025-05-14 uv入门:下一代 Python 包管理器
- 2025-05-14 python基础模块三剑客:sys、os、shutil(增加示例代码)
- 2025-05-14 python 中安装lxml包出现的问题及技术解答
- 2025-05-14 Linux和Windows下:Python Crypto模块安装方式区别
- 2025-05-14 Python + Pycrypto 加密模块的正确使用姿势
- 05-27程序员用 Python 爬取抖音高颜值美女
- 05-27YOLO v3、FaceNet和SVM的人脸检测识别系统源码(python)分享
- 05-27「工具推荐」世界上最简单的人脸识别库 44.7 star
- 05-27开源人脸识别系统源码推荐
- 05-27Go 人脸识别教程
- 05-27Python 深度学习之人脸识别(yolo+facenet)
- 05-27简单的Py人脸识别
- 05-27Python编程 - 基于OpenCV实现人脸识别(实践篇)爬虫+人脸识别
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 82℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)