当前位置:首页>python>Python 模块化没那么玄:从零设计一个能跑的大项目

Python 模块化没那么玄:从零设计一个能跑的大项目

  • 2026-08-20 06:21:38
Python 模块化没那么玄:从零设计一个能跑的大项目

当孩子写的 Python 代码越来越长,把几百行逻辑全塞在一个文件里时,找错、修改都会变成一场灾难。

真正的编程高手,写大型项目时就像搭乐高:先把大玩具拆成各个独立的积木块(模块),做好每个积木块的功能,最后用胶水把它们拼在一起。这就是模块化编程

今天咱们不删减任何核心代码,手把手带大家从设计并实现一个完整的单词分析大项目,把模块设计、__name____all____init__.py和主函数调用的底层逻辑一次性讲透!

🧱 一、什么是模块化编程?

简单来说,模块化编程就是把一个复杂的大程序,拆分成多个独立的、可以重复使用的.py小模块。每个模块只干一件事,模块之间通过接口互相配合。

三大基本步骤:

1.设计框架:确定要分几个模块,每个模块里放什么函数(先不写细节,用pass占位)。

2.实现与测试:把每个模块里的代码写完,并单独测试确保没 bug

4.主函数组装main.py主程序里把这些模块串联起来,完成最终目标。

📐 二、第一步:架构设计(写伪代码)

假设我们要开发一个六级单词分析系统,功能有两个:

1.找出特定前缀(比如un-mis-)的单词。

2.分析这些单词的词性(名词、动词等),统计数量并展示结果。

我们可以先把项目拆成 3 个模块,在设计阶段只写函数名和注释,具体实现全用 pass占位:

########## 模块 1: mysearch.py (负责检索)
def mysearch(headfuncpath):
根据开头字符串和文件路径,返回符合条件的单词列表
这是一个高阶函数,接收 func 函数对文件进行预处理
pass
########## 模块 2: myanalyse.py (负责分析)
def myanalyse(wordlist):
分析输入的单词列表,统计词性数量和具体单词内容
返回两个字典:一个存个数,一个存内容
pass
########## 模块 3: mydisplay.py (负责展示)
def mydisplay(*args):
格式化打印展示最终结果
pass

小贴士:如果你是项目的架构师,写完上面这段设计,你的框架设计工作就完成了!接下来的具体实现可以分工给其他人写。

📂 三、项目文件目录规划

在动手写代码前,我们先在电脑里建立如下的文件夹(包)结构:

project6/
├── mydic/                   # Python 包(文件夹)
│   ├── __init__.py          包的标识与初始化文件
│   ├── design.py            模块设计伪代码
│   ├── mysearch.py          单词检索模块
│   ├── myanalyse.py         词性分析模块
│   ├── mydisplay.py         结果展示模块
│   └── 六级单词.txt          数据资源文件
└── main.py                  项目主入口文件(放在包外面)

🔑 四、必知两大核心变量:__name____all__

在编写模块代码前,必须先搞懂 Python 模块自带的两个特殊变量:

1. __name__变量(模块测试神器)

当你直接运行当前.py文件时,__name__的值固定为'__main__'

当这个.py文件被别人导入import)时,__name__的值就是文件名

直观对比示例:

# test1.py
print('test1 里的 __name__ :'__name__)

# test2.py
import test1 as t1
print('test2 里的 __name__ :'__name__)

如果直接运行test1.py,会打印:test1 里的 __name__ : __main__

如果直接运行test2.py,会打印:

test1 里的 __name__ : test1

test2 里的 __name__ : __main__

我们就利用if __name__ == '__main__':来编写模块的独立测试代码,这样既能在开发时测试模块,又不会在被导入时触发测试!

2. __all__变量(导出白名单)

__all__是一个列表,用来规定使用from 模块 import *时,允许暴露给外部使用的函数或变量。没有写在列表里的函数将被隐藏

🛠️ 五、 第二步:模块的具体实现与测试

接下来,我们把刚才设计的 3 个模块一个个敲出真实代码:

1. 实现 mysearch.py(搜索模块)

这里包含文件检测函数myreadcheck和主搜索函数mysearch

def mysearch(head='un'func=myreadcheckpath='六级单词.txt'):
'''高阶函数:根据前缀检索单词'''
check_res = func(path)
if check_res is None:  文件不存在直接返回
return
    else:
        file = check_res[1]  从元组中取出打开的文件对象
pattern = re.compile(r'\b{}.*\b'.format(head))  正则匹配:以 head 开头的单词
pattern2 = re.compile(r' +')  正则匹配:多个连续空格
wordlist = []

for line in file:
        res2 = pattern2.sub(' 'line)  把多个空格压成 1 个空格
res1 = pattern.search(res2)
if res1 is not None:
            wordlist.append(res1.group())  存入匹配到的单词
file.close()  记得关闭文件
return wordlist


限定对外暴露的函数(隐藏内部辅助函数 myreadcheck
__all__ = ['mysearch']

模块独立单元测试
if __name__ == '__main__':
print("【测试 mysearch 模块】检索 mis 开头的单词:")
print(mysearch(head='mis'))

2. 实现 myanalyse.py(词性分析模块)

# coding=gbk
'''模块 mysearch: 负责检查文件并检索特定前缀的单词'''
import re


def myreadcheck(path='六级单词.txt'):
'''检查文件是否存在,防止程序崩溃'''
try:
        file = open(path)
return pathfile  返回多个变量时,Python 会打包成元组返回
except FileNotFoundError:
print('路径 {} 有错,未找到文件!'.format(path))
return None
# coding=gbk
'''模块 myanalyse: 主要用于对英文单词列表进行处理并进行词性分析'''
def myanalyse(wordlist=[]):
'''分析单词词性,返回两个字典(数量统计字典,单词列表字典)'''
wdic1 = {'名词'0'动词'0'形容词'0'介词'0}
    wdic2 = {'名词': []'动词': []'形容词': []'介词': []}

for string in wordlist:
if 'n.' in string:  根据文本中的词性标注进行分类
wdic1['名词'] += 1
wdic2['名词'].append(string)
if 'a.' in string:
            wdic1['形容词'] += 1
wdic2['形容词'].append(string)
if 'vi.' in string or 'vt.' in string:
            wdic1['动词'] += 1
wdic2['动词'].append(string)
if 'prep.' in string:
            wdic1['介词'] += 1
wdic2['介词'].append(string)

return wdic1wdic2


模块独立单元测试
if __name__ == '__main__':
print("【测试 myanalyse 模块】:")
    dict1dict2 = myanalyse(['good a.好的'])
print(dict1)
print(dict2)

3. 实现 mydisplay.py(结果展示模块)

# coding=gbk
'''模块 mydisplay: 用来格式化展示检索与分析的结果'''
def mydisplay(*args): # *args 可接收任意数量的参数并打包成元组
'''如果传入的是两个字典,逐行对比打印;否则直接打印'''
if len(args) == and isinstance(args[0]dictand isinstance(args[1]dict):
for key in args[0]:
print(key"数量:"args[0][key]"列表:"args[1][key])
else:
print(args)

模块独立单元测试
if __name__ == '__main__':
print("【测试 mydisplay 模块】:")
    mydisplay('test')

🔗 六项第三步:胶水文件__init__.py与主程序main.py

各个模块单独写好并测试通过后,怎么把它们装进里并方便调用呢?

1. 设计 __init__.py

__init__.py Python 包的灵魂。当我们导入 mydic文件夹时,系统会首先自动执行这个文件。

mydic/__init__.py里写入:

规定使用 from mydic import * 时导入的模块
__all__ = ['mysearch''myanalyse''mydisplay']

自动把包内子模块的函数暴露出来
from mydic.mysearch import *
from mydic.myanalyse import *
from mydic.mydisplay import *

这样处理后,外部调用者就不需要知道里面细分了多少个.py文件,直接导入mydic就能用!

2. 编写总控主程序 main.py

mydic包外面新建main.py,调用我们搭好的所有积木:

import mydic 导入我们自己写的 mydic 
# 1. 检索以 mis 开头的单词
word = mydic.mysearch(head='mis'path='mydic\\六级单词.txt')

print("--- 原始检索到的单词列表 ---")
# *word 是星号解构语法:把列表解构成独立的参数传给函数
mydic.mydisplay(*word) 

print("\n--- 词性分析汇总结果 ---")
# myanalyse 返回两个字典组成的元组,打碎元组后正好作为两个字典参数传给 mydisplay
mydic.mydisplay(*mydic.myanalyse(word))

📝 模块化编程知识点速查

概念/变量

核心作用大白话解释

模块化设计

大工程拆成小文件,用pass占位写框架,后期分工实现。

__name__

区分是直接运行还是被导入。直接运行时值为 '__main__',常用于写测试代码

__all__

导出名单限制。决定用from module import *时哪些函数能被外部拿到。

__init__.py

文件夹变成“Python 的身份证,可以在里面做预导入,简化外部调用。

*args*seq

函数定义时用来接收多个参数;调用函数时用来对列表/元组解构(打散)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 15:30:27 HTTP/2.0 GET : https://f.mffb.com.cn/a/511369.html
  2. 运行时间 : 0.276344s [ 吞吐率:3.62req/s ] 内存消耗:4,651.20kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5e03c5da178a9aca1b8c4c6585dc7f2b
  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.001115s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001648s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.022718s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000833s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001862s ]
  6. SELECT * FROM `set` [ RunTime:0.007037s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001551s ]
  8. SELECT * FROM `article` WHERE `id` = 511369 LIMIT 1 [ RunTime:0.001278s ]
  9. UPDATE `article` SET `lasttime` = 1787297427 WHERE `id` = 511369 [ RunTime:0.030445s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000740s ]
  11. SELECT * FROM `article` WHERE `id` < 511369 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001082s ]
  12. SELECT * FROM `article` WHERE `id` > 511369 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.017050s ]
  13. SELECT * FROM `article` WHERE `id` < 511369 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012670s ]
  14. SELECT * FROM `article` WHERE `id` < 511369 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001996s ]
  15. SELECT * FROM `article` WHERE `id` < 511369 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002210s ]
0.280086s