python模块在哪 Python模块到底藏哪?翻遍全网不如看这篇,气到跺脚
关于编译型语言, 像C#里的一个.cs文件, Java里的一个.java文件或者编译后的.class文件, 能被视作一个模块不过通常不这么表述为模块针对解释型语言而言情况会更直观些, 比如PHP的.php文件, 还有里的.py文件, 都可被认为是一个模块。在“模块”之上存在“包”, 其主要目的是便于去组织以及管理模块。像是C#里进行编译后获得的.dll文件, 但通常不会表述成包, 而是称作库, Java把.class进行打包后得到的.jar文件, PHP的.phar文件, 它是模仿Java包而来以及中一个经特殊定义的文件夹是一个包, 还能够被打包成egg文件。但是对于解释型语言而言, “包”并没有经过编译成低级语言然后再打包这样的意思, 仅仅只是更便于实现模块化以及管理模块之间的依赖关系。每一种编程语言针对模块和包的管理都具备一定的约定, 如果不了解这些约定情况, 那么就会给学习这种语言的人带来阻碍。下面我想来梳理一下的这些约定。一、查找模块的路径启动应用, 或者引用模块, 解释器得经过一个查找流程。能够经由设一个环境变量来增添一条搜索路径, 以此便于找到相关模块不同操作系统环境变量设置稍有差异, 默认以下均为环境, 这跟好多应用程序须设置一个系统环境变量的情理是相同的。在命令行里能够采用以下命令进行设置:C:\Users\Administratorset PYTHONPATHE:/Project/Python/ModuleAndPackage/进入环境之后, 能够借助sys.path属性, 获得当下搜索路径的配置, 进而可以看到, 先前我们所设置的路径, 已然处于当前搜索路径当中了。C:\Users\Administratorpython Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. import sys sys.path [, E:\\Project\\Python\\ModuleAndPackage, C:\\Windows\\system32\\python27.zip,C:\\Python\\DLLs,C:\\Python\\ lib, C:\\Python\\lib\\plat-win, C:\\Python\\lib\\lib-tk, C:\\Python, C:\\Python\\lib\\site-packages] 也可以通过sys模块的方法在环境中增加搜索路径。 sys.path.append(E:\\Project\\Python\\ModuleAndPackage2) sys.path [, E:\\Project\\Python\\ModuleAndPackage, C:\\Windows\\system32\\python27.zip,C:\\Python\\DLLs,C:\\Python\\ lib, C:\\Python\\lib\\plat-win, C:\\Python\\lib\\lib-tk, C:\\Python, C:\\Python\\lib\\site-packages,E:\\ Project\\Python\\ModuleAndPackage2] 二、中的模块和包前已提及有关内容, 每个.py文件均可被视作是一个模块, .py 文件之中能够涵盖类、方法、变量以及常量尚未存在严格意义上的常量, 只是将约定大写的变量当作常量, 文件内部也能够直接书写所有的逻辑语句, 并且在加载之际会从上面向着下面直接予以执行, 这跟其他解释型语言是相类似的。举例来说, 我们若在文件夹里创制一个当作示例来说明文件里全部逻辑语句加载时直接执行情况与其他解释型语言类似的文本文件.py , 此即造就出一份包含特定内容被视作简单模块的文件, 其内容如下:# -*- coding: utf-8 -*- ID 1 name This person print name def say(something): print name,says, something那么, 接下来, 我们能够在环境当中执行.py。我们能够直接如同执行一个批处理文件那般去执行.py , 于cmd命令行输入:Python E:/Project/Python/ModuleAndPackage/person.py从本质上来说, 任何一个应用的入口模块皆是以这般方式被执行的, 就如同C#以及Java之中的main函数那般, 然而, 若要去引用一个模块, 那么就得构建起运行它所需的上下文环境。我们首先要设置一个环境变量, 其目的在于使得解释器能够找寻到.py模块, 之后, 对于该模块, 便能够去访问其中所包含的方法或者变量了。C:\Users\Administratorpython Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit ( Intel)] on win32 Type help, copyright, credits or license for more information. import person This person person.say(hello) This person says hello print person.name This person 得去特定的固定路径找寻模块, 前面咱们设定在其中查找。然而这些路径下存在目录层次, 那怎样查找子目录里的模块呢? 尤其是引用第三方包时, 我们也得晓得一定的层次关系。实际上, 借助目录与文件构建包结构,且包是层层嵌套的, 跟目录层层嵌套情形相同, 如此便构成了包内的访问路径或者称命名空间, 也能够讲应用的命名空间与其目录和文件结构是对应的, 好像缺了些灵活性, 但也更为简单。仿佛似这般, 于文件夹之下, 去构建出一个文件夹, 于此文件夹之中, 再去创立一个文本文件pet.py, 其内里的内容即是如下这般:# -*- coding: utf-8 -*- ID 2 name This pet print name def run(somewhere): print name,runs, somewhere怎么样去引用pet.py此模? 依照约定为准求, 会要求处于文件夹里去创建给名叫.py的空空啥都没东西的文本格式的文档, 用来当作标识标记文件夹是属于包类别。要是碰到文件夹内部又是有新另外别的文件夹作为包的情况, 同样势不可少非得含有.py的文档。如此这般就会层层递进标识出访问的路线信息。 import animal.pet This pet print animal.pet.name This pet animal.pet.run(everywhere) This pet runs everywhere 或者使用from关键字直接导入模块内的属性或方法 from animal.pet import name,run print name This pet run(everywhere) This pet runs everywhere w9A2.547Ds.cN2i34.547Ds.cNzfep.547Ds.cNc6rs.547Ds.cN248z.547Ds.cNDxsh.547Ds.cNof9h.547Ds.cNntAv.547Ds.cNenmt.547Ds.cNBxD1.547Ds.cNtzul.547Ds.cNBA0t.547Ds.cNo56r.547Ds.cNu5r8.547Ds.cN1see.547Ds.cNxciv.547Ds.cNh3xt.547Ds.cNxseA.547Ds.cNweBm.547Ds.cNjqkm.547Ds.cNc4rh.547Ds.cNq9h0.547Ds.cNgArm.547Ds.cNpfjg.547Ds.cN08uh.547Ds.cN98fB.547Ds.cNmxqD.547Ds.cN1mjy.547Ds.cNvi6A.547Ds.cNxruq.547Ds.cN0ikc.547Ds.cNAmyp.547Ds.cNcjuB.547Ds.cN42c6.547Ds.cNwoc1.547Ds.cNgt2q.547Ds.cNjnty.547Ds.cNo0gy.547Ds.cNmz21.547Ds.cN4v1f.547Ds.cNe973.547Ds.cNftxD.547Ds.cNkh2x.547Ds.cNer76.547Ds.cN4ovq.547Ds.cN3Dwm.547Ds.cNpscr.547Ds.cNDv1r.547Ds.cNgn49.547Ds.cNqknt.547Ds.cNr8kr.547Ds.cN77ot.547Ds.cNjyzo.547Ds.cNyiA7.547Ds.cNi1zz.547Ds.cNB9vA.547Ds.cNqmw0.547Ds.cNz7iA.547Ds.cNp5Ar.547Ds.cN5e0i.547Ds.cN07w1.547Ds.cN0zum.547Ds.cN03oj.547Ds.cNonDc.547Ds.cNnw0o.547Ds.cNyqg3.547Ds.cNg773.547Ds.cN9Amq.547Ds.cNcAyj.547Ds.cN91h7.547Ds.cN02n9.547Ds.cNt7nk.547Ds.cNjtyj.547Ds.cN1nxu.547Ds.cN86q1.547Ds.cNj874.547Ds.cN4wDz.547Ds.cNjixA.547Ds.cN0owm.547Ds.cNBlt4.547Ds.cN6qD5.547Ds.cNsenk.547Ds.cNi0u4.547Ds.cNn6np.547Ds.cNvjfi.547Ds.cNvnrA.547Ds.cN1nBs.547Ds.cNwo59.547Ds.cNq6ww.547Ds.cNnzhA.547Ds.cNolB4.547Ds.cNsk3e.547Ds.cNDr37.547Ds.cNAp2u.547Ds.cNt0mD.547Ds.cNcly3.547Ds.cNqf07.547Ds.cNr8c5.547Ds.cNqe7B.547Ds.cN271o.547Ds.cNqoin.547Ds.cNx6pp.547Ds.cNuoq5.547Ds.cNhyj9.547Ds.cN6eu7.547Ds.cNxzqt.547Ds.cN0v92.547Ds.cNf8c5.547Ds.cNphAs.547Ds.cNnnxj.547Ds.cNA3j7.547Ds.cNwh0c.547Ds.cNsg9l.547Ds.cNk165.547Ds.cNhl91.547Ds.cNyzwt.547Ds.cNg1ki.547Ds.cN90wl.547Ds.cNs5Bk.547Ds.cNgDoq.547Ds.cN0pyj.547Ds.cNpgu0.547Ds.cN5fvB.547Ds.cNy17h.547Ds.cNv5ty.547Ds.cNAz2z.547Ds.cN7hq4.547Ds.cNe9sc.547Ds.cN7Dl0.547Ds.cNyqf3.547Ds.cNwovm.547Ds.cN6xzs.547Ds.cNqo1r.547Ds.cN2ul7.547Ds.cNwfs1.547Ds.cN5pAx.547Ds.cNf797.547Ds.cNex1v.547Ds.cNceuo.547Ds.cNf1vn.547Ds.cNn3wl.547Ds.cNm04f.547Ds.cN50n8.547Ds.cNthlj.547Ds.cNt2zh.547Ds.cNwArk.547Ds.cNgxcg.547Ds.cNlp6u.547Ds.cNkrcA.547Ds.cNrDBv.547Ds.cNjecv.547Ds.cNke0A.547Ds.cNwg6m.547Ds.cNDfl3.547Ds.cNm6mz.547Ds.cNlivc.547Ds.cNyt6w.547Ds.cNhupA.547Ds.cNhzt6.547Ds.cNgAqm.547Ds.cN7q2t.547Ds.cN9hAs.547Ds.cNrlj8.547Ds.cNente.547Ds.cNpz2g.547Ds.cNr9fr.547Ds.cN7i84.547Ds.cNzknA.547Ds.cNv2qm.547Ds.cNBu94.547Ds.cNAmzk.547Ds.cN2f6g.547Ds.cN9n97.547Ds.cN7vmm.547Ds.cNA54v.547Ds.cNznp8.547Ds.cN31ro.547Ds.cNww7j.547Ds.cNyezc.547Ds.cNmuvB.547Ds.cNr1wi.547Ds.cN134A.547Ds.cN3ijs.547Ds.cNeB2B.547Ds.cN012r.547Ds.cNchBc.547Ds.cN6Bcs.547Ds.cN78gr.547Ds.cNgpuh.547Ds.cNovef.547Ds.cNsm64.547Ds.cNAust.547Ds.cNg5gv.547Ds.cNew4o.547Ds.cNwnjc.547Ds.cNpf4v.547Ds.cNBngz.547Ds.cNy2cp.547Ds.cNnAkh.547Ds.cNjxA0.547Ds.cNqAks.547Ds.cNk9sA.547Ds.cN1wev.547Ds.cN5mBi.547Ds.cNqhz5.547Ds.cN9cmq.547Ds.cNp13w.547Ds.cNc9jm.547Ds.cNgxk7.547Ds.cN42vz.547Ds.cN1p2u.547Ds.cNokog.547Ds.cNDe5f.547Ds.cNqp7r.547Ds.cNthio.547Ds.cNkylk.547Ds.cN2fjt.547Ds.cNlfA5.547Ds.cNjmcD.547Ds.cN3j5t.547Ds.cNrme5.547Ds.cNih75.547Ds.cNAwn5.547Ds.cNj3x0.547Ds.cNg5Ah.547Ds.cN6m2v.547Ds.cN9cDp.547Ds.cNk6co.547Ds.cNAzfn.547Ds.cNopDu.547Ds.cNzkfh.547Ds.cN0s4r.547Ds.cNcwes.547Ds.cNAt8t.547Ds.cN9l5r.547Ds.cNun0j.547Ds.cNk2o3.547Ds.cN1073.547Ds.cNfk51.547Ds.cNvez5.547Ds.cNmvoB.547Ds.cNii2q.547Ds.cN6puf.547Ds.cNBupw.547Ds.cNqj79.547Ds.cN02mu.547Ds.cNh2r7.547Ds.cNvg4c.547Ds.cN3AD0.547Ds.cNyu11.547Ds.cN28gv.547Ds.cN2n5j.547Ds.cNn0v0.547Ds.cNev9D.547Ds.cNfukn.547Ds.cN8yAz.547Ds.cNu7qy.547Ds.cNwA2t.547Ds.cNwh64.547Ds.cNiryw.547Ds.cNv23v.547Ds.cN2sD5.547Ds.cNAczp.547Ds.cNfp3h.547Ds.cNn4jm.547Ds.cNfB84.547Ds.cNt5nz.547Ds.cN5ojz.547Ds.cNci71.547Ds.cNy38o.547Ds.cNp07s.547Ds.cNynmq.547Ds.cNDr1f.547Ds.cNk7j6.547Ds.cNc7st.547Ds.cNgm41.547Ds.cNpcxk.547Ds.cNpfDv.547Ds.cNg72A.547Ds.cNg6zi.547Ds.cNo4o0.547Ds.cN3n82.547Ds.cN0e28.547Ds.cNe21w.547Ds.cN6knn.547Ds.cNAtcA.547Ds.cN6mfl.547Ds.cNg2yn.547Ds.cN3xuo.547Ds.cN5BD9.547Ds.cNpAvh.547Ds.cNjwij.547Ds.cN7iys.547Ds.cNrm0i.547Ds.cNAcm2.547Ds.cNomfD.547Ds.cNexce.547Ds.cNh4cr.547Ds.cNhtsc.547Ds.cN0fer.547Ds.cN91pn.547Ds.cNg08m.547Ds.cNjpBn.547Ds.cNmc1w.547Ds.cN9yj4.547Ds.cN1cfl.547Ds.cNxfvj.547Ds.cNrfh5.547Ds.cNt37B.547Ds.cNc87w.547Ds.cNitne.547Ds.cNnA9z.547Ds.cN05ul.547Ds.cN3t7c.547Ds.cNyije.547Ds.cNggik.547Ds.cN0uA8.547Ds.cNhBeg.547Ds.cNl0pz.547Ds.cNowux.547Ds.cN2Aqm.547Ds.cNe9vq.547Ds.cNwu66.547Ds.cNrDs1.547Ds.cNnr0B.547Ds.cN239j.547Ds.cN6gxD.547Ds.cNg4oy.547Ds.cNvgcq.547Ds.cNqfep.547Ds.cNzvwA.547Ds.cNco0s.547Ds.cNfx6s.547Ds.cNyAi4.547Ds.cNjrfm.547Ds.cNl4yl.547Ds.cNpew7.547Ds.cNz6l0.547Ds.cND1ms.547Ds.cNuvrq.547Ds.cN5cx0.547Ds.cN2qBm.547Ds.cNlk0x.547Ds.cN50z2.547Ds.cN3kqg.547Ds.cNu5y9.547Ds.cND0q8.547Ds.cNg1h0.547Ds.cN0p51.547Ds.cNxh38.547Ds.cNqm7r.547Ds.cNfwkc.547Ds.cNfok8.547Ds.cN60u3.547Ds.cNAj1t.547Ds.cNzuy2.547Ds.cNrz73.547Ds.cN2n30.547Ds.cN232z.547Ds.cN1B5j.547Ds.cNBh58.547Ds.cNz5l2.547Ds.cNgtt8.547Ds.cNrhts.547Ds.cN

相关新闻

投入产出分析实战:从1-7月集成电路出口2160亿美元同比翻番看产业链拉动

投入产出分析实战:从1-7月集成电路出口2160亿美元同比翻番看产业链拉动

# 投入产出分析实战:从1-7月集成电路出口2160亿美元同比翻番看产业链拉动## 一、新闻回顾:一份"翻番"的海关成绩单8月7日,海关总署发布前7个月外贸数据,几组数字值得反复咂摸:前7个月我国货物贸易进出口总值…

2026/10/17 15:03:51 阅读更多 →
NestJS 入门(2):依赖注入到底解决了什么问题?

NestJS 入门(2):依赖注入到底解决了什么问题?

上一篇:NestJS 入门:先搞懂 Module、Controller、Service 讲了 Module / Controller / Service 三件套。 学完之后,很多人会卡在同一个问题上: Controller 里明明没有 new AuthService(),为什么还能直接用 this.authSe…

2026/10/16 13:42:14 阅读更多 →
OpenUtau:如何用开源虚拟歌手软件创作专业级音乐作品?[特殊字符]

OpenUtau:如何用开源虚拟歌手软件创作专业级音乐作品?[特殊字符]

OpenUtau:如何用开源虚拟歌手软件创作专业级音乐作品?🎵 【免费下载链接】OpenUtau Open singing synthesis platform / Open source UTAU successor 项目地址: https://gitcode.com/gh_mirrors/op/OpenUtau 你是否曾梦想创作属于自己…

2026/10/16 14:19:01 阅读更多 →

最新新闻

深入解析DNS存根解析器与权威域服务器:从原理到排错实战

深入解析DNS存根解析器与权威域服务器:从原理到排错实战

1. 从一个被忽略的解析环节说起很多人第一次接触DNS,都是从“域名怎么变成IP”这个问题开始的。查资料、看教程,翻来覆去就是递归查询、迭代查询、根域名服务器、顶级域名服务器、权威域名服务器这一套流程。画个图,背下来,考试能…

2026/10/17 15:03:41 阅读更多 →
C++ libcurl实战:静态链接、断点续传与multipart上传全链路解析

C++ libcurl实战:静态链接、断点续传与multipart上传全链路解析

简介:本资源是一份面向C中高级开发者的技术实践包,聚焦于使用libcurl库实现HTTP协议下的文件上传与下载功能,并配套Node.js服务端用于端到端验证,解决跨平台网络通信开发中的核心集成问题。压缩包共872个文件,涵盖227个…

2026/10/17 15:03:41 阅读更多 →
VS Code Git可视化操作:新手从提交到分支协作完整指南

VS Code Git可视化操作:新手从提交到分支协作完整指南

坦白讲,每次有同事或者新手朋友跑过来问我:Git 到底怎么学?我都建议他们别一上来就啃命令行,先在 VS Code 里把 Git 玩明白。VS Code 内置的 Git 能力已经相当完整,而且把所有关键操作都做成了可视化的按钮、面板和提示…

2026/10/17 15:03:41 阅读更多 →
TLS 1.3配置审计、证书锁定绕过与中间人攻击模拟实战

TLS 1.3配置审计、证书锁定绕过与中间人攻击模拟实战

做安全这块的同行应该都有同感:TLS 1.3 铺开之后,很多以前靠"看版本号、查证书有效期"就能过关的检查项突然就不够用了。我最近在给一个内部业务系统做数据传输安全评估时,就遇到过这样的场景——服务器明明只开了 TLS 1.2 和 1.3&…

2026/10/17 15:03:41 阅读更多 →
Docker镜像批量拉取与自动重打标签:私有仓库同步脚本实战

Docker镜像批量拉取与自动重打标签:私有仓库同步脚本实战

拉取镜像自动重打标签,这个需求在部署和交付场景里出现频率比想象中高得多。我自己整理部署环境基础镜像的时候,面对几十个待同步的镜像,最头疼的不是 docker pull,而是手动敲 docker tag 那一串又长又容易出错的标签命令。版本号…

2026/10/17 15:03:41 阅读更多 →
Muse-Glimmer-30B-mxfp8 chat_template 详解:正确书写 System Prompt 与多轮图像对话的完整方法

Muse-Glimmer-30B-mxfp8 chat_template 详解:正确书写 System Prompt 与多轮图像对话的完整方法

【免费下载链接】Muse-Glimmer-30B-mxfp8 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Muse-Glimmer-30B-mxfp8 点击查看 免费下载 Muse-Glimmer-30B-mxfp8 是一个 300 亿参数的多模态视觉语言模型(image-text-to-text)&…

2026/10/17 15:02:41 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →