【Python训练营打卡】day30 @浙大疏锦行
DAY 30 模块和库的导入
知识点回顾:
1. 导入官方库的三种手段
2. 导入自定义库/模块的方式
3. 导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致)
作业:自己新建几个不同路径文件尝试下如何导入
场景一:
main.py和 rectangle.py都在同一目录
目录结构:
项目根目录
├── main.py
└── rectangle.py
运行方案:直接在终端python main.py
# rectangle.py
import mathdef calculate_area(length, width):return length * width
# main.py
from circle import calculate_arearadius = 5
area = calculate_area(radius)
print(f"半径为 {radius} 的圆,面积是: {area}")# 或者注释上面的,用下面的方法
# import circle
# radius = 5
# area = circle.calculate_area(radius)
# print(f"半径为 {radius} 的圆,面积是: {area}")
尝试在终端上运行python main.py
场景2:
main.py和 rectangle.py都在根目录的子目录 model下
目录结构:
项目根目录
└── model
├── __init__.py (推荐添加,将 model 目录标记为包)
├── main.py
└── rectangle.py
运行方案:
1. 运行命令:python model/main.py
2. 进入路径:cd xxx(main的相对路径),然后执行python main.py
(注意如果先cd后,就不能采用第一个命令了)
# rectangle.py
import mathdef calculate_area(length, width):return length * width
# main.py
from circle import calculate_arearadius = 5
area = calculate_area(radius)
print(f"半径为 {radius} 的圆,面积是: {area}")
场景3:
main.py在根目录rectangle.py在子目录model下
目录结构:
项目根目录
├── main.py
└── model
├── __init__.py (必需添加,将 model 目录标记为一个可导入的包)
└── rectangle.py
运行方案:直接在终端python main.py
import mathdef calculate_area(length, width):return length * width
from model.rectangle import calculate_area #注意是model.rectanglewidth = 4
length = 6
area = calculate_area(width, length)
print(f"长为 {length},宽为 {width} 的矩形,面积是: {area}")
场景4:
main.py和rectangle.py都在根目录的子目录model下,并且model下还有子目录 utils(跨目录导入)
项目根目录
├── rectangle2.py
└── utils/
├── __init__.py (必需添加,将 model 目录标记为一个可导入的包)
└── rectangle.py
└── model/
└── main.py
运行方式
python -m model.main
如果直接使用python model/main.py,会报错,
当使用 python -m model.main 时,Python 会将当前目录(即项目根目录)添加到 sys.path 的开头。
from utils import calculate_areawidth = 4
length = 6
area = calculate_area(width, length)
print(f"长为 {length},宽为 {width} 的矩形,面积是: {area}")
import mathdef calculate_area(length, width):return length * width
源码的查看
如果第三方库是纯python写的,往往在函数上按住ctrl即可进入函数内部查看源代码。
但是很多第三方库为了性能,底层是用其他语言写的,这里我们计算机视觉库OpenCV为例。
OpenCV核心是用C++编写的(C++可以显著提高性能),但它通过Python等其他语言的接口(bindings)使得这些功能可以在Python环境中被调用。这些接口是通过一种叫做Python/C API的技术实现的,其中C++的功能被封装成Python模块,使得Python用户可以像使用纯Python编写的库一样使用OpenCV。
OpenCV的核心是用C++编写,并且已经编译成二进制文件,编译后的二进制文件可以在不同操作系统上运行,Python中的用户通常不能直接看到方法的源代码。
二进制文件是机器语言,处理器可以直接理解和执行无需翻译,二进制语言反汇编是很困难的,用二进制语言除了效果好外,也是让用户无法看到源代码,保护了自己的知识产权。
这意味着:
●二进制文件dll文件:当你在Python中导入OpenCV库(通import cv2),你实际上是在调用预先编译好的二进制文件。这些文件包含了实现OpenCV功能的可执行代码,而非人类可读的源代码。
●接口封装:用户只能看到Python函数和对象的接口(即函数的定义,不包括实现的细节)。这也意味着无法从利用ctrl跳转到函数内部,pycharm的debugger功能同理也无法看到内部结构。
●文档和源代码:尽管在Python中不能直接看到C++的源代码实现,用户可以参考官方文档来了解各个函数和方法的用法。如果需要查看实现细节,可以访问OpenCV的[GitHub仓库](https://github.com/opencv/opencv)查看C++源代码。
@浙大疏锦行
相关文章:
【Python训练营打卡】day30 @浙大疏锦行
DAY 30 模块和库的导入 知识点回顾: 1. 导入官方库的三种手段 2. 导入自定义库/模块的方式 3. 导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) 作业:自己新建几个不同路径文件尝试下如何…...
微前端记录
微前端 实习过程中,做了些微前端方向的调研,记录下 微前端将前端拆分为独立的可以单独运行,测试,部署的代码, 具有技术栈无关,多团队,多业务线协作的特点。 前端现有的页面,分为单页…...
词嵌入基础
一 前言 最近在学习NLP方面知识,在此记录一下词嵌入的技术。 二 词袋法 1.理论 就是统计一个句子或文章中,词语出现的次数。这方法有去重词袋法,无去重词袋法。 a 原理与案例 chinese_docs ["我爱自然语言处理","自然语…...
CSS之网页元素的显示与隐藏(旧土豆网遮罩案例)
网页元素的显示与隐藏。 很多网页的侧边栏都会出现广告,我们点击关闭时,广告会消失不见,但若重新刷新网页页面,则广告会重新出现。网页的广告并非是真的被删除了,而是被暂时的隐藏起来了。 • display • visibil…...
关于 Web 漏洞原理与利用:2. XSS(跨站脚本攻击)
一、原理: 用户输入未过滤被执行 攻击者输入的内容,如果没有被正确处理(过滤/转义),被网页原样输出到浏览器中,那么这些内容就可能会被浏览器当成代码执行,这就是 XSS(跨站脚本攻击…...
【TTS回顾】深度剖析 TTS 合成效果的客观评估与主观评价
如何评估合成音色的效果 当我们面对一个新发布的 TTS 模型,或者在多个模型之间进行选择时,一个核心问题摆在我们面前:如何科学、全面地评估一个 TTS 模型的合成效果? 仅仅凭感觉“听一听”显然不够客观和系统。我们需要一套行之有效的评估方法和指标体系,来衡量 AI “说话…...
WPF点击按钮弹出一个窗口
一、基本方法:直接实例化并显示窗口 1. 普通窗口(无参数) 适用场景:简单的弹出窗口,无需传递数据。 private void Button_Click(object sender, RoutedEventArgs e) { var newWindow new MyWindow(); // 实例化…...
WPF中的ObjectDataProvider:用于数据绑定的数据源之一
ObjectDataProvider是WPF(Windows Presentation Foundation)中一种强大而灵活的数据绑定源,它允许我们将对象实例、方法结果甚至是构造函数的返回值用作数据源。通过本文,我将深入探讨ObjectDataProvider的工作原理、使用场景以及如何在实际应用中发挥其…...
Java POJO接收前端null值设置
在 Java 中,若要让 price 字段接收前端传递的 null 值,只需确保以下几点: 1. 使用包装类型 Double 你的 price 字段已经是包装类型 Double(而不是基本类型 double),这天然支持 null 值。基本类型 double …...
C++(24):容器类<list>
目录 一、核心概念 二、基本语法 1. 声明与初始化 2.添加元素 3.访问与遍历 4. 删除元素 三、特点 1. 高效插入/删除 2. 不支持随机访问 3. 特有成员函数 4. 内存与性能 四、示例代码 五、成员函数 六、使用场景 七、注意事项 Lists将元素按顺序储…...
WPF Data Binding 及经典应用示例
什么是Data Binding(数据绑定)? Data Binding是WPF中的核心机制,它建立了UI元素(视图)与数据对象(模型/视图模型)之间的连接通道,实现了数据的自动同步。当数据发生变化…...
Qt—模态与非模态对话框
Qt—模态与非模态对话框 核心概念 模态对话框:强制用户优先处理当前窗口,阻塞指定范围的用户交互。非模态对话框:允许用户自由切换窗口,无交互限制。 一、模态对话框类型与行为 1. 应用级模态(Applica…...
如何实现从网页一键启动你的 Electron 桌面应用(zxjapp://)
在现代桌面应用开发中,Electron 凭借其跨平台能力和前端友好的特性,受到了越来越多开发者的青睐。但你是否想过,如何让用户从网页上一键启动你本地的 Electron 应用?比如像某些云盘客户端那样,点击网页上的按钮就能直接…...
linux编译安装srs
下载编译运行 git clone https://github.com/ossrs/srs.git cd srs/trunk ./configure --h265on make需要安装 yum install -y patch yum install -y unzip yum install -y tcl编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/s…...
对于程序员的个人理解
系统架构师 1.下图是应该具备的能力,而且看前辈的资料中,发现干的时间越多就越全能。 2.对于新技术来说应该让其先沉淀三年左右看他是不是能打,同时可以避免其大规模的改动。 3.要有宏观视野 【要看自己所开发的东西是不是可以随时调用&am…...
Web安全基础
文章目录 前端基础浏览器工作原理HTTP超文本传输协议cookiesessiontoken web服务器USBWebServerNginx介绍 前端三大件html超文本标记语言CSS层叠样式表JavaScript基本语法php基本语法 攻击手段文件上传漏洞文件包含漏洞代码执行漏洞变量修改shell监听SQL注入跨站脚本XSSXSS示例…...
从秒开到丝滑体验!WebAssembly助力ZKmall商城重构 B2B2C 商城性能基线
在 B2B2C 电商领域,用户对页面加载速度与交互流畅度的要求日益严苛。传统 Web 技术在处理复杂业务逻辑、海量数据渲染时,常出现卡顿、延迟等问题,导致用户流失。ZKmall 商城创新性地引入 WebAssembly(简称 Wasm)技术&a…...
word文档交叉引用
参考视频 论文排版中参考文献的引用方法:交叉引用法_哔哩哔哩_bilibili 具体操作 定义编号格式 进入开始页面,重新定义编号格式. 碰到的问题 出现了一个大大的空格,不知道是什么情况,想把编号和参考文献紧贴在一起。 调整列…...
项目QT+ffmpeg+rtsp(三)——延迟巨低的项目+双屏显示
文章目录 前言双屏显示widget.cppwidget.h前言 对于复现情况,分为两种情况 第一种,对于我而言,是直接解压后,就能直接运行了 第二种,对于师兄而言,需要你构建debug后,会产生这个文件夹,执行的时候,地址应该在这,我猜的,这里面没有dll,exe程序就找不到dll这些库,你…...
二分交互题总结
简单版 bool query(int x){cout<<x<<endl;cout.flush();string ans;cin>>ans;return (ans">"); } void solve() {int n;cin>>n;int l1,rn;if(n1)return cout<<"! 1"<<endl,void();if(n2){if(query(2))return cout&…...
昆仑通态MCGSpro,自定义配方功能
最近在做一个机床的控制系统,是用来打磨轴承滚子的,用到了昆仑通态触摸屏,西门子1200,以及1个台达变频器,五个私服电机。大致就是下面这个设备。 对于西门子1200运动控制的相关内容,以及调试过程中遇到的坑…...
工业视觉高精度测量利器——Halcon卡尺工具深度解析
Halcon中的卡尺工具(Caliper Tool)是工业视觉中用于高精度边缘检测和几何测量的重要功能,尤其在尺寸测量、定位和对象分析中广泛应用。以下从原理、实现到优化的深度解析: 1. 卡尺工具实现原理(步骤分解)…...
2025毕业论文与答辩资料精选汇总
毕业季来临,对于即将毕业的大学生来说,毕业论文和答辩无疑是毕业季的“重头戏”。尤其是对于IT行业的学生来说,毕业论文不仅需要扎实的专业知识,还需要良好的表达能力和清晰的逻辑思维。今天,我为大家整理了一份涵盖IT…...
「数智化聚合分销生态系统」定制开发:重构全渠道增长引擎
在数字经济深度重构全球商业格局的时代,企业亟需突破传统分销体系的效能边界,构建具有核心竞争力的现代化营销网络。我们以行业前沿技术为驱动,提供全栈式聚合分销系统定制开发服务,通过深度融合数字化、智能化解决方案࿰…...
【物联网】 ubantu20.04 搭建L2TP服务器
部署篇 序言 为了是两个客户端在同一个网络内,需要找一台服务器,搭建一个L2TP服务器,通过L2TP使两个客户端在同一个网络内,为什么要搭建,主要是解决例如员工出差后,还需要连接公司内网资源的问题,本文主要…...
std::ranges::iota
std::ranges::iota_view 和 std::views::iota 是 C23 Ranges 库中的一部分,用于生成一系列递增的值,类似 Python 的 range() 或传统的 for 循环生成器。 一 原形 Defined in header <numeric> Call signature template< std::input_or_output…...
物联网简介:万物互联的未来图景
物联网简介:万物互联的未来图景 引言 在科技飞速发展的今天,我们身边的一切似乎都在悄然发生变化。从清晨智能闹钟根据你的睡眠状态自动唤醒,到厨房里的咖啡机在你起床前已经煮好咖啡;从城市交通系统通过实时数据优化红绿灯时长…...
Python类方法解析:从字节序列重构Vector2d实例
这篇文章将详细解析Python中的classmethod装饰器,并通过一个实际案例——为Vector2d类实现frombytes方法,展示如何从字节序列重构对象实例。 类方法基础 classmethod是Python中一个重要的装饰器,它用于定义类方法。与普通实例方法不同&…...
list.forEach(s -> countService.refreshArticleStatisticInfo(s.getId())); 讲解一下语法
这段代码使用了Java中的forEach方法结合Lambda表达式来遍历一个列表,并对列表中的每个元素执行特定操作。具体来说,它会遍历列表中的每一个元素,并调用countService.refreshArticleStatisticInfo(s.getId())方法来刷新每个文章的统计信息。下…...
linux服务器与时间服务器同步时间
内网部署服务器,需要同步时间 使用系统内置的systemctl-timesyncd进行时间同步 1.编辑配置文件 sudo nano /etc/systemd/timesyncd.conf修改添加内容入下 [Time] NTP10.100.13.198 FallbackNTP#说明 #NTP10.100.13.198:你的主 NTP 时间服务器 IP #Fall…...
通过低功耗蓝牙通信实例讲透 MCU 各个定时器
📖 在嵌入式开发中,“定时器”几乎无处不在。但大多数人一说起定时器,要么只会 HAL_Delay(),要么搞不清楚硬件、虚拟、协议定时器到底有啥区别。 今天我们不讲纯理论,而是直接通过一个完整的 BLE 通信实例,带你一次性搞清楚 MCU 各类定时器的真实用途和工作机制。 📚…...
Spring_Boot(一)Hello spring boot!
新建项目加入 spring_web 依赖,生成如下 pom.xml文件,即为代码配置。 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XML…...
MySQL故障排查与生产环境优化
目录 一、前置知识点:MySQL 逻辑架构解析 (一)客户端和连接服务层(最上层) (二)核心服务层(第二层) (三)存储引擎层 (四…...
mysql故障排查与环境优化
一、mysql运行原理 mysql的运行分为三层 客户端和连接服务 核心服务功能(sql接口、缓存的查询、sql的分析和优化以及部分内置函数的执行等。) 存储引擎层(负责mysql中数据的存储和提取。) 二、示例 1、实验环…...
博图1200硬件组态与启保停程序编写步骤详解
一、前言 在工业自动化控制领域,西门子S7-1200 PLC因其性能稳定、编程灵活而广受欢迎。本文将详细介绍使用TIA Portal(博图)软件进行S7-1200 PLC硬件组态以及编写基本启保停程序的完整步骤,帮助初学者快速掌握这一基础而重要的技…...
深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践
深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践 引言 随着云计算和分布式系统的快速发展,微服务架构已成为现代软件开发的主流模式。Java作为企业级应用开发的核心语言,结合Spring Boot和Spring Cloud的强大生态,…...
AM32电调学习解读九:ESC上电启动关闭全流程波形分析
这是第九篇,前面的文章把各个模块的实现都介绍了一轮,本章是从运行的角度结合波形图,把整个流程走一遍。 先看下一运行的配置,我把一些配置关闭了,这样跑起来会好分析一些,不同配置跑起来效果会有差异。使用…...
迅联文库开发日志(三)登陆注册
目录 一、注册 Controller层 Service层 二、登录 其他需要注意的: 需要实现 Serializable 的场景 一、注册 先思考我们需要哪些参数: 邮箱、昵称、密码、邮箱验证码 (图片验证码会调用checkCode()验证) Controller层 Req…...
Oracle 数据库的默认隔离级别
Oracle 数据库的默认隔离级别 默认隔离级别:READ COMMITTED Oracle 默认使用 读已提交(READ COMMITTED) 隔离级别,这是大多数OLTP(在线事务处理)系统的标准选择。 官方文档 https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/da…...
PDF 合并测试:性能与内容完整性
我们一直在改进 PDF 合并工具 JPedal,并希望通过测试对比其与其他工具的表现。该工具支持合并包括大文件在内的完整文档。 如何测试 PDF 合并输出 我们在示例文件上进行了对比测试,您也可以用自有文件复现。 测试中使用的方法之一是借助 Adobe Reader&a…...
白杨SEO:不到7天,白杨SEO博客网站百度搜索显示和排名恢复正常!顺带说说上海线下GEO聚会分享和播客红利
大家好,我是白杨SEO,专注SEO十年以上,全网SEO流量实战派,AI搜索优化研究者。 5月开始,明显就忙起来了,不管是个人陪跑还是企业顾问,不管是需要传统SEO还是新媒体流量,还是当下这个A…...
docker介绍与常用命令汇总
docker简介 docker是什么? Docker 是一个开源的应用容器引擎,它可以让开发者将应用与运行环境打包成一个标准的、可移植的容器(Container),在任何地方都可以快速部署和运行,无需关心底层环境是否一致。 …...
Axure设计数字乡村可视化大屏:构建乡村数据全景图
今天,让我们一同深入了解由Axure设计的数字乡村可视化大屏,看看它如何通过精心的布局和多样化的图表类型,将乡村的各类数据以直观、易懂的方式呈现出来,为乡村管理者提供有力的数据支持。 原型效果预览链接:Axure数字乡…...
c#基础01(.Net介绍)
文章目录 .Net平台介绍.Net平台简介跨平台开源.Net Core.Net Framework开发工具安装选项 创建项目 .Net平台介绍 .Net平台简介 .NET是一种用于构建多种应用的免费开源开放平台,例如: Web 应用、Web API 和微服务 云中的无服务器函数 云原生应用 移动…...
GraphQL在.NET 8中的全面实践指南
一、GraphQL与.NET 8概述 GraphQL是一种由Facebook开发的API查询语言,它提供了一种更高效、更灵活的替代REST的方案。与REST不同,GraphQL允许客户端精确指定需要的数据结构和字段,避免了"过度获取"或"不足获取"的问题。…...
开源音视频转文字工具:基于 Vosk 和 Whisper 的多语言语音识别项目
背景介绍 随着短视频、播客等音视频内容的爆发式增长,快速将音视频内容转换为文字的需求也越来越大。无论是内容创作者需要的字幕,还是企业需要的会议记录,都需要一个可靠的语音转文字解决方案。 技术架构 本项目采用双引擎架构࿰…...
Playwright 多语言一体化——Python_Java_.NET 全栈采集实战
在现代 Web 自动化领域,Playwright 通过其多语言支持可在 Python、Java 及 .NET 三大生态中共享同一底层实现,简化了跨团队协作与维护成本 。然而,若忽略代理IP等必要配置,很容易导致功能异常或被目标网站限制,本文将以…...
【Linux网络】传输层协议UDP
🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12891150.html 目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number…...
VAPO:视觉-语言对齐预训练(对象级语义)详解
简介 多模态预训练模型(Vision-Language Pre-training, VLP)近年来取得了飞跃发展。在视觉-语言模型中,模型需要同时理解图像和文本,这要求模型学习二者之间的语义对应关系。早期方法如 VisualBERT、LXMERT 等往往使用预先提取的图像区域特征和文本词嵌入拼接输入,通过 T…...
自制操作系统day4(c指针)(指针和数组)(CLI和STI)(EFLAGS)
day4 关于c指针的理解(结合汇编) int i; char *p; p(char *) i; *pi &0x0f;p(char *) i; *pi &0x0f;MOV ECX,i MOV BYTE [ECX],(i &0x0f) 如果一开始不给p赋值,p的内存地址不确定,也就是这个ECX里的值不确定&#x…...