当前位置:首页>python>《Python 从入门到精通》083|自定义模块与包:你的代码也可以被别人导入

《Python 从入门到精通》083|自定义模块与包:你的代码也可以被别人导入

  • 2026-07-01 03:22:53
《Python 从入门到精通》083|自定义模块与包:你的代码也可以被别人导入

上一章我们已经把 import 最常见的几种写法理顺了。你已经知道:

一个 .py 文件通常就是一个模块import 的本质,是把别的模块里的内容拿过来用 模块拆分的意义,不只是为了能运行,更是为了让代码结构更清晰、更容易复用

那接下来,一个特别重要的认知就来了:

很多初学者一提到导入,脑子里想到的都是别人写好的库,比如 mathrandomos。 但你很快就要意识到,不只是别人能写模块,你自己也能写模块。

而且不只是模块,你还可以把多个模块再组织成一个更大的结构,这就是包。

这一章我们就把这两件事讲清楚:

什么叫自定义模块 什么叫包 为什么你的代码也完全可以被别人导入和复用

这一步一旦迈过去,你的代码思维会明显从“写一个脚本”往“搭一个小项目”转。

一、什么叫自定义模块

先说最直接的定义:

你自己写的 .py 文件,只要里面放了可复用的代码,它就是自定义模块。

注意,这个定义一点都不复杂。

比如你新建一个文件:

my_math.py

里面写:

defadd(a, b):return a + bdefsub(a, b):return a - b

这个 my_math.py,就是你自己定义的一个模块。

为什么叫“自定义”?

因为它不是 Python 自带的,也不是第三方库下载来的,而是你自己写出来的。

这说明一个非常重要的事实:

模块不是高高在上的“库”,模块首先就是你自己能写出来的代码文件。

二、为什么说你的代码也可以被别人导入

因为导入这件事,本质上和“这个模块是谁写的”没关系。

Python 不在乎这个模块是不是官方写的。 它也不在乎是不是某个 유명库写的。 它只关心一件事:

你给出的模块里,有没有合法的 Python 代码,以及当前环境能不能找到它。

所以只要你写出了一个正常的 .py 文件,比如:

tools.pybook.pystring_utils.pyuser_service.py

那它们就都可能被别的文件导入。

这件事特别值得你真正想通。因为它意味着:

你写的代码,不一定只能在当前文件里用一次,它完全可以被组织成可复用能力。

从这一刻开始,你的代码就不只是“做完一道题”,而是开始具备“被再次使用”的可能。

三、先看一个最小完整例子

假设你有一个文件叫 my_math.py,内容如下:

defadd(a, b):return a + bdefmul(a, b):return a * b

然后你再写一个 main.py

import my_mathprint(my_math.add(35))print(my_math.mul(46))

输出结果:

824

这里发生的事情其实非常简单。

你自己写了一个模块 my_math.py然后在另一个文件里把它导进来 最后复用了它里面的函数

这就是自定义模块最基础、最本质的使用方式。

你现在应该把这个感觉建立起来:

“自己写一个模块,再在别的文件里导入它”这件事,本身就是非常正常的 Python 开发方式。

四、为什么自定义模块特别重要

因为只要代码一多,你早晚会进入这种阶段:

有些函数别的地方也能用 有些类不应该只写死在当前脚本里 有些工具逻辑应该单独整理 有些配置和常量也应该独立管理

这时候,如果你还是所有内容全塞一个文件里,复用和维护都会越来越痛苦。

而自定义模块能帮你做什么?

把通用函数单独拿出来 把类单独整理出去 把工具逻辑和主流程分开 让不同文件之间通过导入协作

这本质上是在让代码越来越模块化。

所以自定义模块不是“附加技能”,而是代码开始走向像样结构之后的必经之路。

五、自定义模块最常放什么内容

通常还是那几类:

函数 类 变量或常量 少量辅助逻辑

比如一个 config.py 模块里,可能会放:

APP_NAME = '图书管理系统'MAX_BORROW_COUNT = 3

一个 book.py 模块里,可能放:

classBook:    ...

一个 string_tools.py 模块里,可能放:

defclean_text(text):    ...

这说明模块本质上并不挑内容。 它关心的是逻辑归类。

所以你在写自定义模块时,重点不在于“我是不是写得足够高级”,而在于:

这一组代码逻辑上是不是适合放在一起。

六、一个特别常见的误区:以为模块必须很复杂

不是。

很多人一听“自定义模块”,脑子里会自动觉得,那得写成一个很大的工具库才算模块。其实完全不是。

你哪怕只是写了一个文件,里面只有两个函数,只要它能被别的文件导入使用,它就是模块。

比如:

# string_tools.pydefto_upper(text):return text.upper()defto_lower(text):return text.lower()

这就已经是一个很正常的自定义模块了。

所以不要把“模块”想得太正式。 模块不是规模概念,而是组织方式概念。

七、当一个模块写出来以后,你要开始考虑“别人怎么用”

这一点特别重要。

前面你写练习代码时,思路可能是:

我自己能跑通就行

但从自定义模块开始,你最好多加一个视角:

如果别人来导入我这个模块,他应该怎么用 他最需要哪些内容 模块名字是不是清楚 函数名字是不是直白 是否不该把无关代码也塞进去

也就是说,模块一旦打算被复用,它就不再只是“写给自己看的草稿”,而开始有“接口设计”的味道了。

这一步其实很关键。因为它会逼着你开始关注:

命名 边界 职责 可读性

这就是从练习代码走向项目代码的重要转折点之一。

八、什么叫包

模块已经讲清楚了,现在往前再走一步。

如果说:

一个 .py 文件是一个模块

那包你可以先这样理解:

一个用来组织多个模块的文件夹,就可以看作一个包。

也就是说:

模块解决的是“单个文件怎么组织代码” 包解决的是“多个相关模块怎么组织到一起”

举个很直观的例子。

假设你做一个图书系统,可能有这些文件:

book.pyuser.pylibrary.pyconfig.py

如果它们都散落在外面,文件一多就会显得杂。

这时候,你很自然就会想把它们放到一个文件夹里,比如叫:

library_system

这个文件夹里装着多个相关模块。 这时候,它就已经很像一个包了。

所以你可以先把包理解成:

装模块的文件夹。

九、为什么包会出现

因为项目继续长大之后,单靠模块已经不够了。

比如你以后可能会有:

和用户有关的模块 和图书有关的模块 和支付有关的模块 和工具函数有关的模块 和配置有关的模块

如果这些全都平铺在同一级目录里,时间一长也会乱。

所以包的意义就是进一步做分层整理。

比如你可以这样组织:

library_system/    book.py    user.py    library.py    config.py

甚至将来再复杂一点,还可以按子目录继续分类。

所以包本质上是在解决比模块更大一级的组织问题。

十、先别把包想得太难,它就是“目录级组织”

这一点一定要先放轻松。

很多新手一看到“包”这个词,就会觉得进入高难区了。 其实在入门阶段,你完全可以先把它理解成:

为了更清楚地管理多个模块,我们把相关模块放进一个目录里。

这和你平时整理文件夹没什么本质区别。

比如你不会把照片、文档、音乐全扔桌面上。 你会建文件夹,把它们分类归档。

包做的就是同样的事情,只不过对象从普通文件换成了 Python 模块文件。

十一、模块和包的关系,可以这样记

这一组关系一定要理顺。

模块,是单个 .py 文件。 包,是用来装多个模块的目录。

你可以这样类比:

模块像一本书。 包像一个书架分类。

或者:

模块像一个房间。 包像一套房子。

所以不要把模块和包混成同一个东西。 它们是不同层级。

这个层级感一清楚,后面学导入路径时会轻松很多。

十二、一个很接地气的项目结构例子

比如我们把前面图书借阅项目稍微整理一下,可以长成这样:

library_system/    book.py    user.py    library.py    utils.py    main.py

这里:

book.py 是模块user.py 是模块library.py 是模块 整个 library_system 文件夹,可以理解成一个包级别的组织容器

这样一来,整个项目结构比把五六个文件全扔根目录里,要清楚得多。

而且你一眼就能看出来:

这些文件是同一个系统的一部分 它们不是随便散着的

这就是包最直接的实际价值。

十三、包里通常会放什么

在入门阶段,你可以先把包理解成“按主题归类的一组模块”。

比如:

一个图书系统包,里面放图书、用户、借阅逻辑 一个工具包,里面放字符串处理、文件处理、时间处理 一个数据分析包,里面放读数据、清洗数据、统计分析 一个爬虫包,里面放请求模块、解析模块、存储模块

所以包不是为了显得正式,而是因为:

一组模块本来就属于同一个主题或同一个子系统。

把它们放一起,是结构自然长出来的结果。

十四、为什么说“你的代码也可以被别人导入”这件事特别重要

因为它会改变你的写代码视角。

以前你写一段代码,可能只想着:

我把这次任务做完就行

但当你意识到“这段代码以后还可能被别的文件、别的项目、甚至别的人导入”时,你就会自然开始注意下面这些事:

模块名够不够清楚 函数名是不是能让人看懂 类的职责是否明确 有没有把不该暴露的内容也暴露出去 模块内部是否掺了太多无关逻辑

也就是说,模块和包不仅在整理代码,也在倒逼你写出更像“公共能力”的代码。

这会直接提升你的代码质量。

十五、一个很常见的问题:模块和包到底先学哪个

从学习顺序上说,一定是先模块,再包。

因为包只是更大一级的组织方式。 如果你连单文件模块都还没适应,那一上来讲包只会让脑子更乱。

所以你可以这样理解当前阶段:

先学会把代码拆成多个模块 再学会把多个模块归到一个包里 最后再学会更规范地在模块和包之间导入

这条路径是最自然的。

这一章重点,还是先把“自定义模块”和“包”的直觉建立起来。

十六、什么时候说明你真的需要包了

一个很实用的判断标准是:

当你的项目里已经不止三四个模块,而且这些模块还能明显分成几个主题区域时,就很适合开始考虑包。

比如你有:

用户相关模块 图书相关模块 订单相关模块 工具相关模块

这时候如果还全部平铺在一起,可读性就会明显下降。 而用包整理后,结构会一下清楚很多。

所以包不是一开始就必须上的。 它更像是在项目继续长大后,自然长出来的整理需求。

十七、你现在先不用死抠包的所有细节

这一点特别重要。

包这个话题,后面一深入会涉及:

导入路径 相对导入 绝对导入__init__.py包初始化行为

这些都是真实存在的内容。 但你现在这一章,不需要一次吃太深。

你当前最重要的是先把两件事想清楚:

我自己写的 .py 文件,本身就可以是模块 多个相关模块放进同一个目录里,就开始有包的味道了

只要这两条立住,后面学更细节的导入方式时,你就不会悬空。

十八、一个很实用的思维升级

从这一章开始,你最好慢慢建立一种新习惯:

写代码时,不只想“这一段怎么写”,还要想“这一段应该放在哪个文件里”“这个文件又属于哪一组模块”。

这就是典型的结构感。

比如你写了一个处理字符串的函数,别急着先塞主程序。 先想,它是不是应该进 string_tools.py

你写了一个和图书对象有关的类,别先扔 main.py。 先想,它是不是应该进 book.py

当你开始这样想问题时,你就已经不再只是在写代码,而是在组织项目。

这一步非常关键。

十九、本章小练习

你可以做两个特别适合入门的练习。

第一个练习:

自己写一个 my_string.py 文件,里面放两个函数:

reverse_text(text)把字符串反转

count_words(text)统计空格分隔后的单词数

然后在另一个文件里导入并使用它。

第二个练习:

把你前面写过的图书类、用户类,分别拆到不同文件里。 再建一个总目录,把这些文件都放进去。 你暂时不需要追求多复杂,重点是亲手感受一下:

当多个模块开始被装进一个目录后,整个小项目是不是立刻更像样了。

这个感觉,只有自己动手整理一次才会特别明显。

二十、本章总结

这一章最重要的,是把“自定义模块”和“包”的直觉真正建立起来。

你自己写的 .py 文件,只要能被别的文件导入使用,它就是自定义模块。 模块不是官方专属能力,而是你自己就能写出来的代码组织方式。 包可以先理解成用来组织多个相关模块的目录。 模块解决单文件层面的代码组织,包解决多模块层面的结构管理。 学会自定义模块和包,意味着你的代码开始从“写一个脚本”走向“搭一个小项目”。 这一步不仅改变文件结构,也会改变你写代码时的思考方式。

下一章我们继续往前走,进入一个很多人第一次看到会有点困惑、但非常重要的内容:084|__name__ == "__main__" 到底有什么用

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 10:32:06 HTTP/2.0 GET : https://f.mffb.com.cn/a/499403.html
  2. 运行时间 : 0.107660s [ 吞吐率:9.29req/s ] 内存消耗:4,639.95kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=fa0093d6e3634811a30935905eb5ffcc
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000681s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000963s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000353s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000322s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000669s ]
  6. SELECT * FROM `set` [ RunTime:0.000255s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000746s ]
  8. SELECT * FROM `article` WHERE `id` = 499403 LIMIT 1 [ RunTime:0.004587s ]
  9. UPDATE `article` SET `lasttime` = 1783045926 WHERE `id` = 499403 [ RunTime:0.007685s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000375s ]
  11. SELECT * FROM `article` WHERE `id` < 499403 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000684s ]
  12. SELECT * FROM `article` WHERE `id` > 499403 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000538s ]
  13. SELECT * FROM `article` WHERE `id` < 499403 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001252s ]
  14. SELECT * FROM `article` WHERE `id` < 499403 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001991s ]
  15. SELECT * FROM `article` WHERE `id` < 499403 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.015283s ]
0.109624s