python如何跨文件调用自己定义的函数

        当自己定义函数过多时,只有一个python文件时代码会很长,不易理清代码框架,比如下面这段代码,如何隐藏具体函数细节呢?也就是把def函数放到另外一个python文件里步骤如下:

一个python文件代码篇幅过长

import os
import gzip
import numpy as npdef load_mnist_gz(image_file_path, label_file_path, flatten=True, normalize=False):# 定义内部函数来加载标签def load_labels(file_path):with gzip.open(file_path, 'rb') as f:f.read(8)  # 跳过文件头labels = np.frombuffer(f.read(), dtype=np.uint8, offset=0)return labels# 定义内部函数来加载图像def load_images(file_path):with gzip.open(file_path, 'rb') as f:f.read(16)  # 跳过文件头images = np.frombuffer(f.read(), dtype=np.uint8, offset=0).reshape(-1, 784)if normalize:images = images / 255.0return images# 使用内部函数加载数据t_labels = load_labels(label_file_path)x_images = load_images(image_file_path)return x_images, t_labels# 设置数据集文件路径
train_image_file_path = r'D:\myproject\PyTorch-MNIST-master\DataSets\MNIST\raw\train-images-idx3-ubyte.gz'
train_label_file_path = r'D:\myproject\PyTorch-MNIST-master\DataSets\MNIST\raw\train-labels-idx1-ubyte.gz'
test_image_file_path = r'D:\myproject\PyTorch-MNIST-master\DataSets\MNIST\raw\t10k-images-idx3-ubyte.gz'
test_label_file_path = r'D:\myproject\PyTorch-MNIST-master\DataSets\MNIST\raw\t10k-labels-idx1-ubyte.gz'# 使用定义的函数加载数据集
x_train, t_train = load_mnist_gz(train_image_file_path, train_label_file_path, flatten=True, normalize=False)
x_test, t_test = load_mnist_gz(test_image_file_path, test_label_file_path, flatten=True, normalize=False)# 打印数据集的形状
print(x_train.shape)  # (60000, 784)
print(t_train.shape)  # (60000,)
print(x_test.shape)   # (10000, 784)
print(t_test.shape)   # (10000,)

 调整后易于理解框架:

1.首先要新建文件夹,因为有两个python文件,必须要有文件夹

2.定义两个python文件,需要注意的时封装的函数也要导入相关的库比如

import os
import gzip
import numpy as np
def load_mnist_gz(image_file_path, label_file_path, flatten=True, normalize=False):def load_labels(file_path):with gzip.open(file_path, 'rb') as f:f.read(8)  # 跳过文件头labels = np.frombuffer(f.read(), dtype=np.uint8, offset=0)return labelsdef load_images(file_path):with gzip.open(file_path, 'rb') as f:f.read(16)  # 跳过文件头images = np.frombuffer(f.read(), dtype=np.uint8, offset=0).reshape(-1, 784)if normalize:images = images / 255.0return imagest_labels = load_labels(label_file_path)x_images = load_images(image_file_path)return x_images, t_labels

如果没有上面的三个库也会报错,原因是这个函数需要用到上面的那三个库,而不是简单的把def函数内容复制过来

3.在主函数里面加入要导入的自定义函数,这个例子是导入

from dataset.minst import load_mnist_gz

自定义函数在dataset文件夹下的minst.py中,然后导入自定义的函数名比如load_minst_gz即可,当相对路径导入报错时候就导入绝对路径即可

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

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

相关文章

面试中如何回答关于 `RecyclerView` 性能优化的理解和实践经验

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在面试中展示对 RecyclerView 性能优化的理解和实践经验,你可以从以下几个方面进行阐述: 1. 理解 RecyclerView 的工作…

Maven-五、属性

Maven 文章目录 Maven前言属性定义properties文件加载pom文件属性总结 前言 使用maven中的属性可以来简化我们的配置工作。 属性定义 在pom文件中可以使用**标签设置属性,属性名自定义,然后可以在使用${属性名}**文件中引用自己定义的属性。 使用属性进行配置&a…

干货 | 2024数智新时代制造业数字化创新实践白皮书(免费下载)

导读:本白皮书将对制造业发展历程、现状、趋势与核心难题做深入解读,并在此基础上提出了相应的制造行业解决方案,结合业内实践成功的客户案例来详析信息化转型的有效方法,以供生产制造行业的从业者参考交流。

【网络安全】依赖混淆漏洞实现RCE

未经许可,不得转载。 文章目录 正文 依赖混淆是一种供应链攻击漏洞,发生在企业的内部依赖包错误地从公共库(如npm)下载,而不是从其私有注册表下载。攻击者可以在公共注册表中上传一个与公司内部包同名的恶意包&#xf…

Java的IO流(二)

目录 Java的IO流(二) 字节缓冲流 基本使用 使用缓冲流复制文件 字符缓冲流 缓冲流读取数据原理 字符编码 字符集 转换流 序列化流与反序列化流 基本使用 禁止成员被序列化 序列号不匹配异常 打印流 基本使用 系统打印流与改变流向 Prop…

【Windows】快速帮你解决如何找到 Windows 上的 .condarc 文件

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【VLM小白指北 (1) 】An Introduction to Vision-Language Modeling

开一个新坑Vision-Language Modeling (VLM) ,原文76页,慢慢更,for beginners,但也不能之前啥都不会啊。 原文链接:An Introduction to Vision-Language Modeling Introduction 存在的问题:将语言与视觉相…

算法-K个一组翻转链表

// 要实现没k个节点进行翻转的操作,可以按照一下步骤进行 // 1.计算链表长度 // 2.分组反转 // 3. 使用一个虚拟头节点来处理边界情况 // 4.每次处理k个节点进行反转 // 5.如果剩余节点不足k个 则保持原有顺序 // 6.依次反转每组中的节点 // 1.使用prevGroupEEnd追…

【测试】——JUnit

📖 前言:JUnit 是一个流行的 Java 测试框架,主要用于编写和运行单元测试,用来管理测试用例。本文采用JUnit 5 目录 🕒 1. 添加依赖🕒 2. 注解🕘 2.1 Test🕘 2.2 BeforeAll AfterAll&…

OceanBase 3.X 高可用 (一)

OceanBase 3.X 高可用(一) 一、分布式核心 OceanBase 3.x 采用的是paxos 协议,与raft协议相比。其复杂程度高,实现技术难度大。 Paxos 协议允许事务日志乱序发送,顺序提交。raft允许事务顺序发送,顺序提…

Windows Internals 7th Edition English Download

天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享天翼云盘是中国电信推出的云存储服务,为用户提供跨平台的文件存储、备份、同步及分享服务,是国内领先的免费网盘,安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。https://cloud.1…

高并发内存池(四):查缺补漏 与 申请内存过程的调试

目录 查缺补漏 问题:min函数的冲突问题 申请内存过程的调试 当前文件展示 Common.h ObjectPool.h ConcurrentAlloc.h ThreadCache.h CentralCache.h PageCache.h ThreadCache.cpp CentralCache.cpp PageCache.cpp UnitTest.cpp 单进程单span 单进程…

谷歌收录批量查询,怎么查看批量查询谷歌收录情况

在SEO(搜索引擎优化)领域,确保网站内容被谷歌等搜索引擎有效收录是提升网站可见性和流量的关键步骤。批量查询谷歌收录情况,能够帮助网站管理员快速了解哪些页面已被搜索引擎识别并编入索引,哪些页面可能存在问题需要优…

【python】石头剪刀布,模拟十次并统计获胜次数

解决问题 下面是一个使用Python编写的剪刀、石头、布游戏的程序,包含玩家与计算机对战和模拟计算机对战10次的功能。 import random def get_computer_choice(): return random.randint(0, 2) def get_user_choice(): choice input("请输入剪刀(0)…

Spring高手之路24——事务类型及传播行为实战指南

文章目录 1. 编程式事务(不推荐)2. 声明式事务(推荐)3. 事务的传播行为(复杂混合事务场景及时序图说明)3.1 NESTED和REQUIRES_NEW传播行为的区别 1. 编程式事务(不推荐) 定义&#…

MAC激活Typora以及禁止成功激活弹窗的方法

激活 Typora 首先在官网下载 Typora 的最新版 并且安装。 打开以下目录 /Applications/Typora.app/Contents/Resources/TypeMark/page-dist/static/js/ 注意在 Applications 中,需要对 Typora 右键选择 Show Packages Contents 即可进入 Typora.app。 在该目录的文…

C++自动驾驶面试核心问题整理

应用开发 概述:比较基础,没啥壁垒,主要有linux开发经验即可 问题:基础八股,如计算机网络、操作系统、c11等基础三件套;中等难度算法题1-2道。 中间件开发(性能优化) 概述&am…

快递物流查询-快递查询-快递单号查询-快递物流单号查询-快递物流轨迹查询-快递物流查询接口

快递物流查询接口(API)是一种允许开发者通过编程方式实时查询快递物流信息的服务。这些接口通常集成了多家快递公司的物流数据,为电商平台、物流管理系统、个人用户等提供便捷的物流查询服务。以下是关于快递物流查询接口的一些详细介绍&…

哪有什么三教九流,物以类聚罢了——kmeans聚类算法

观察人类社会,亦或说车水马龙中的光怪陆离,不难发现《马原》中介绍的人类社会中的个体,总是通过某种方面的“类似”聚在一起,文学上称这种现象叫做物以类聚,人以群分。 一.引言 前文提到,每个数据项&#x…

SpringBoot项目License证书生成与验证(TrueLicense) 【记录】

SpringBoot项目License证书生成与验证(TrueLicense) 【记录】 在非开源产品、商业软件、收费软件等系统的使用上,需要考虑系统的使用版权问题,不能随便一个人拿去在任何环境都能用。应用部署一般分为两种情况: 应用部署在开发者自己的云服务…