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

news2024/9/23 4:06:29

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

一个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 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.0
            return 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 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.0
            return images
    t_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.coloradmin.cn/o/2156496.html

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

相关文章

结构体对齐、函数传参、库移植

结构体字节对齐 按固定位大小匹配地址&#xff0c;a:10b:1020位 <32位4字节 202040位>32位 所以ab20作为一个int型&#xff0c;int c:20 单独做4个字节&#xff08;int&#xff09; 101020 &#xff08;int&#xff09;4个字节 &#xff0c;20&#xff08;int&#x…

算法之逻辑斯蒂回归(Logistic regression)

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 逻辑斯蒂回归&#xff08;Logistic Regression&#xff09;是统计学中一种广泛应用于二分类问题的算法。它的主要目标是预测二分类问题中的事件发生的概率。尽管名字里有“回归”&#xff0c;但逻…

wordpress迁移到别的服务器

wordpress论坛网站搭建 于2023/11/16写的该文章 一-配置环境 配置LNMP&#xff08;linuxnginxmysqlphpphpmyadmin&#xff09;环境或者LAMP&#xff08;apache&#xff09; 可以选择集成了这些软件的套件 下载链接&#xff1a;https://www.xp.cn/download.html 手动下载这…

https加密原理

以为http的数据都是以明文传送&#xff0c;会有很大的安全问题&#xff0c;所以出现的https协议。https就是在http协议的基础上增加了一个安全层&#xff0c;可以对数据进行加密和解密(例如SSL、TLS等)。 https加密解密的原理&#xff1a;证书非对称加密对称加密 在讲解原理前…

Python爬虫之urllib模块详解

Python爬虫入门 此专栏为Python爬虫入门到进阶学习。 话不多说&#xff0c;直接开始吧。 urllib模块 Python中自带的一个基于爬虫的模块&#xff0c;其实这个模块都几乎没什么人用了&#xff0c;我就随便写写了。 - 作用&#xff1a;可以使用代码模拟浏览器发起请求。&…

2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)

模块化概述 什么是模块&#xff1f;模块是一个封装了特定功能的代码块&#xff0c;可以独立开发、测试和维护。模块通过导出&#xff08;export&#xff09;和导入&#xff08;import&#xff09;与其他模块通信&#xff0c;保持内部细节的封装。 前端 JavaScript 模块化是指…

【Pytorch】一文快速教你高效使用torch.no_grad()

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 博主简介 博主致力于嵌入式、Python、人工智能、C/C领域和各种前沿技术的优质博客分享&#xff0c;用最优质的内容带来最舒适的…

2024年中国研究生数学建模竞赛A/C/D/E题全析全解

问题一&#xff1a; 针对问题一&#xff0c;可以采用以下低复杂度模型&#xff0c;来计算风机主轴及塔架的疲劳损伤累积程度。 建模思路&#xff1a; 累积疲劳损伤计算&#xff1a; 根据Palmgren-Miner线性累积损伤理论&#xff0c;元件的疲劳损伤可以累积。因此&#xff0c;…

基于SpringBoot+Vue的商城积分系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目源码、Python精…

手机在网状态查询接口如何用C#进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口是利用实时数据来对手机号码在运营商网络中的状态进行查询的工具&#xff0c;包括正常使用状态、停机状态、不在网状态、预销户状态等。 二、手机在网状态查询适用哪些场景&#xff1f; 例如&#xff1a;商…

【线程池】ThreadPoolExecutor应用

ThreadPoolExecutor应用 每一步的坚持与积累,都是铸就高薪和大牛的必经的修炼 哈哈,不吹牛逼了,今天来分享最近在提升中的学习总结,无论是对在职场还是求职,看完,我相信都会有些许的收获和成长 也难得过了一个悠闲点的周末,哈哈哈,一起奥利给!! 本文总纲: 1.为什么要自定义线程…

联合体的用法和用联合体判断大小端存储

像结构体⼀样&#xff0c;联合体也是由⼀个或者多个成员构成&#xff0c;这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫&#xff1a;共⽤体。 给联合体其中⼀个成员赋值&#xff0c;其他成…

Linux 文件系统(下)

目录 一.文件系统 1.文件在磁盘上的存储方式 a.盘面、磁道和扇区 b.分区和分组 2.有关Block group相关字段详解 a.inode编号 b.inode Table&#xff08;节点表&#xff09; c.Data blocks&#xff08;数据区&#xff09; d.小结 二.软硬链接 1.软链接 a.软链接的创建…

SystemExit: 系统退出异常的完美解决方法⚙️

&#x1f6aa;SystemExit: 系统退出异常的完美解决方法⚙️ &#x1f6aa;SystemExit: 系统退出异常的完美解决方法⚙️摘要引言正文1. 什么是SystemExit异常&#xff1f;&#x1f4dc;2. 捕获SystemExit&#xff1a;是否应该这样做&#xff1f;⚠️3. 正确处理SystemExit的最…

javase复习day30综合练习

制造假数据 制造数据 练习一 package Demo1;import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; im…

上海数科(北京)律师事务所开业庆典圆满举行

金秋送爽&#xff0c;丹桂飘香。2024年9月22日&#xff0c;数智科技焕新启航主题论坛暨上海数科&#xff08;北京&#xff09;律师事务所&#xff08;以下简称“数科北京”&#xff09;开业庆典在北京中海广场中楼隆重举行。 庆典现场星光熠熠&#xff0c;汇聚了来自法律界、科…

程序员的AI时代:拥抱变革,塑造未来

你们有没有想过&#xff0c;如果有一天&#xff0c;你的编程工作被一个AI助手取代了&#xff0c;你会怎么办&#xff1f;这不是危言耸听&#xff0c;随着AIGC技术的飞速发展&#xff0c;这样的场景可能真的会出现。但是&#xff0c;别担心&#xff0c;今天我们就来聊聊&#xf…

云栖通道看AI产业应用,打开大模型的无限可能

9月19日-21日&#xff0c;2024云栖大会在杭州西湖区云栖小镇举行。20日&#xff0c;云栖通道如约开放。 这是一个为广大AI产业从业者、创业者以及大模型开发者提供的专属交流平台。来自教育、智能体应用、智能驾驶、人形机器人等多个AI应用领域的科学家、开发者、技术代表等现…

AI客服对决:智能客服PK赛揭示企业级AI应用未来

如今的AI对抗场景&#xff0c;简直成了颇具娱乐性的“观赏项目”。围观群众们不仅看得津津有味&#xff0c;时不时还会发出阵阵笑声。 最近&#xff0c;一场别开生面的AI客服挑战赛引发了热议&#xff1a;一位使用“花开富贵”阿姨人设的Agent甩出一条链接&#xff0c;结果对面…

WPF DataGrid 单元格居中,头部居中,点击行改变背景色。

我得全局样式都写在了App.XAML文件下的ResourceDictionary里&#xff0c;方便全局引用 DataGrid样式和点击改变行背景色的触发器(BasedOn继承的是UI框架的样式&#xff0c;若无则删除&#xff0c;触发器还有鼠标移动事件等&#xff0c;按需自行修改添加) <Style x:Key&quo…