当前位置:首页>python>如何像专业人士一样构建 Python 应用

如何像专业人士一样构建 Python 应用

  • 2026-08-18 23:11:57
如何像专业人士一样构建 Python 应用

大多数初学者能够编写Python 代码,但很少有人知道如何规划应用结构,保障项目易于维护,避免最终代码杂乱无序。在这份案例中,你将学习专业开发者使用的实践步骤,打造结构整洁、便于调试、极易扩展的项目。

案例说明:

从下面的sales.csv文件中筛选出regionNorth的记录,保存为report.csv文件。

sales.csv:

reports.csv:

第一步:像书店分类整理图书一样组织代码

保持代码良好的组织结构,能够带来诸多优势:

代码规范组织的好处

• 可读性更高 —— 你能快速理解代码实现的功能。

• 便于排查漏洞 —— 更容易发现并修复程序错误。

• 方便迭代更新 —— 新增功能时不会让代码变得杂乱。

• 减少重复编写 —— 复用已有代码,无需重复造轮子。

• 利于团队协作 —— 其他人能够更快读懂并接手你的代码。

• 节省开发时间 —— 不用在杂乱的代码里反复搜寻内容。

• 程序更加稳定 —— 结构清晰的代码出错概率更低。

编程语言的主要组成单元:

• 代码行

• 函数

• 模块

第二步:借助注释,把任务转化为代码

启动项目有一个简单方法:先以注释形式列出项目需要完成的各项核心任务。

main.py

# load the data # filter the data # write data to a report
随后为每一项任务编写对应的函数:
def load_data():     print("load_data()"def filter_data():     print("filter_data()"def write_report():     print("write_report()"# load the data load_data() # filter the data filter_data() # write data to a report write_report()

优化初始代码结构:

我们将主代码放入名为 report_flow()的函数中,让代码更加整洁:

def load_data():     print("load_data()"def filter_data():     print("filter_data()"def write_report():     print("write_report()")def report_flow():     # load the data     load_data()     # filter the data     filter_data()     # write data to a report     write_report() # runs this firstreport_flow()

第三步:在运行代码前捕获错误

Pylance 十分实用,它能帮助你更顺畅地编写 Python 代码,减少代码出错。

使用 Pylance 的优势

• 边编码边发现错误:在运行程序前高亮标出代码问题。

• 代码智能提示:提供自动补全建议,提升编码速度。

• 问题解读:提示错误原因,通常还会给出修复方案。

• 支持代码跳转:可以快速定位函数、变量的定义位置。

• 提升开发效率:减少排查错误的时间,把更多精力用于编写代码

简要总结:

Pylance 就像一位贴心助手,在你编写 Python 代码时实时检查代码,帮助你尽早发现错误。

安装 Pylance:

点击侧边栏的扩展面板(Windows快捷键:Ctrl + Shift + X),搜索Pylance,然后点击安装按钮。

注意:安装 Pylance 之后,你可能需要重启 Visual Studio Code

Pylance 会在代码出错的位置添加下划线,以此标出常见错误。比如我们注释掉load_data()函数的定义后:

它还会在【问题】面板中列出当前所有错误(快捷键:Ctrl + Shift + M)。

第四步:灵活传递数据,提升程序可扩展性

即便函数只设计用来完成单一特定任务,依旧需要访问程序数据。

不要依赖全局变量,我们可以将数据作为参数(输入)传递给函数,并把更新后的数据以返回值(输出)形式传出。

数据传参方式的优势:

 行为可预测(无副作用):只需查看函数的输入与输出,就能清楚了解函数功能,无需担心程序其他位置发生隐蔽的数据改动。

• 便于调试:如果函数输出结果异常,只需检查传入的参数即可,不用排查整个程序的运行状态。

• 轻松测试:只需传入模拟测试数据、校验输出结果就能测试函数,不必搭建复杂的全局程序环境。

• 代码可复用:函数不绑定特定全局变量,因此你可以在代码任意位置传入不同参数,安全调用该函数

我们可以先定义函数之间传入、传出的数据框架,之后再添加一些示例数据用于测试。这样能够保证在继续开发前,代码可以正常运行。

import pandas as pd def load_data():     # sample data     data = { 		"region": ["North""North""South"], 		"sales": [100200300    # create a dataframe from this data     return pd.DataFrame(data) def filter_data(df):     filtered_df = df     return filtered_df def write_report(df):     print(f"dataframe is: \n {df}"def report_flow():     # load the data     df = load_data()     # filter the data     filtered_df = filter_data(df)     # write data to a report     write_report(filtered_df)report_flow()

使用类型提示(Type Hints

 Python 中,我们可以借助类型提示指定参数和返回值应当具备的数据类型。

这能大幅提升代码可读性;同时借助 PylanceVS Code 这类集成开发环境会在你鼠标悬停或调用函数时,通过悬浮提示框展示类型信息。

函数返回值的类型提示写法:使用 -> 后紧跟数据类型。

def load_data() -> pd.DataFrame:

如果函数没有返回值,则使用 None标注:

def write_report() -> None:

参数的类型提示写法:在参数名称后加冒号,紧接着写明数据类型。

def write_report(df: pd.DataFrame):

下面我们为代码加上类型提示进行更新:

import pandas as pd def load_data() -> pd.DataFrame:     # sample data     data = { 		"region": ["North""North""South"], 		"sales": [100200300    # create a dataframe from this data     return pd.DataFrame(data) def filter_data(df: pd.DataFrame) -> pd.DataFrame:     filtered_df = df     return filtered_df def write_report(df: pd.DataFrame) -> None:    print(f"dataframe is: \n {df}"def report_flow() -> None    # load the data     df = load_data()     # filter the data     filtered_df = filter_data(df)     # write data to a report     write_report(filtered_df)report_flow()

最终,我们将编写项目的主体代码,也就是实现数据读取、筛选与数据输出的代码。

import pandas as pd import os os.chdir(r'E:\TestData')def load_data() -> pd.DataFrame:     df = pd.read_csv('sales.csv')    return dfdef filter_data(df: pd.DataFrame) -> pd.DataFrame:     filtered_df = df[df['region'] == 'North'    return filtered_df def write_report(df: pd.DataFrame) -> None:    df.to_csv('reports.csv',index = False)def report_flow() -> None    # load the data     df = load_data()     # filter the data     filtered_df = filter_data(df)     # write data to a report     write_report(filtered_df)report_flow()

第五步:使用断言防范运行时错误

Python 中的断言可以理解为向程序下达这样一条指令:该条件理应恒成立;倘若不成立,就说明程序出现异常。

基础语法

assert condition

举个例子:下面这个条件成立,20大于 18

age = 20 assert age >= 18

因此不会产生任何提示,程序继续运行。

如果条件为假:

age = 16 assert age >= 18

Python 会终止程序运行并抛出错误。

AssertionError

简单实用示例:

设想你正在编写一个用于两个数字相除的函数:

什么时候使用断言

断言主要用于开发阶段查找程序缺陷,用来验证我们预设的条件是否成立。

一旦断言条件不满足,我们希望能立刻收到提醒。

断言不适合处理常规用户错误(例如用户输入非法内容、文件不存在等场景)。这类情况应当使用异常机制,例如条件判断捕获错误,或是try/except 语句。

简易记忆区分:

• assert = “这种情况绝对不应该发生。

• try + raise = “用户有可能触发这类问题,需要妥善处理。

添加断言后的更新代码:

def report_flow():     # load the data from csv     df = load_data_sales()     assert len(df) == 7"dataframe should have 7 records after loading"     # filter the data     filtered_df = filter_data(df)     assert len(filtered_df) == 2"dataframe should have 2 records after filtering"     # write the report     write_report(filtered_df)

第六步:代码分层(整洁代码架构方案)

分层使各模块职责单一,方便阅读与维护。

分层优势:

• 变更隔离:局部修改不影响其他代码

• 测试便捷:支持单独测试模块

• 逻辑复用:核心代码多处共用

• 并行开发:多人同时开发不同层级

• 易于理解:开发人员想要修复单个问题时,无需掌握整套系统的运行原理。

如何在代码中实现分层

落实到实操层面,我们遵循几条简单规范来对代码分层:

• 按主题归类:将功能相关的函数放置在同一个文件(模块)中。

• 函数职责单一:让函数专注完成一项特定任务,不要同时处理互不相关的工作。

• 划定清晰边界:确保各层级只处理自身范畴内的事务(例如:数据库相关代码负责数据处理,网页相关代码负责界面交互)。

• 传递简洁数据载体:使用简易数据对象(例如字典、数据类)在不同层级之间传递数据。

• 隐藏内部实现细节:其他层级只需调用函数,无需关心函数底层是如何实现功能的。

改造代码,实现分层架构:

1)main.py:

from manager import report_flow report_flow()

2)manager.py:

from data_loader import load_data_sales from report import write_report from filters import filter_data def report_flow():     # load the data from csv     df = load_data_sales()     # filter the data     filtered_df = filter_data(df)     assert len(filtered_df) == 2"dataframe should have 2 records"     # write the report     write_report(filtered_df) if __name__ == "__main__"    report_flow()

3)data_loader.py:

import pandas as pdimport os os.chdir(r'E:\TestData')def load_data_sales() -> pd.DataFrame:     df = pd.read_csv(r"sales.csv"    return df
4)report.py:
import pandas as pd import os os.chdir(r'E:\TestData')def write_report(df: pd.DataFrame):     df.to_csv(r"report.csv", index=False)

5filters.py:

import pandas as pd def filter_data(df: pd.DataFrame) -> pd.DataFrame:     filtered_df = df[df["region"] == "North"    return filtered_df
运行后即可得到reports.csv。

其实还有一步就是使代码更加易读,也就是添加一个常量模块constants.py,不过我觉得可有可无,根据自己的喜好来。当然把所有的常量专门放在一个模块中不失为一种好的方法。

今天的分享就到这儿啦,非常感谢您对“Python SQL审天下公众号的关注和点赞。如果您觉得我的公众号能给您带来一丝丝的收获,请多多转发给您的朋友圈,让更多的人看到并了解。也许您不经意间的点赞和转发,会给他人带来独特的体验和感受。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 15:35:56 HTTP/2.0 GET : https://f.mffb.com.cn/a/509964.html
  2. 运行时间 : 0.304192s [ 吞吐率:3.29req/s ] 内存消耗:4,559.43kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8b99b98af65bfeced8860d34ed9528db
  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.001098s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001699s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005765s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.019520s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001471s ]
  6. SELECT * FROM `set` [ RunTime:0.015091s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001495s ]
  8. SELECT * FROM `article` WHERE `id` = 509964 LIMIT 1 [ RunTime:0.005279s ]
  9. UPDATE `article` SET `lasttime` = 1787297756 WHERE `id` = 509964 [ RunTime:0.026048s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.011908s ]
  11. SELECT * FROM `article` WHERE `id` < 509964 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001426s ]
  12. SELECT * FROM `article` WHERE `id` > 509964 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007117s ]
  13. SELECT * FROM `article` WHERE `id` < 509964 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006884s ]
  14. SELECT * FROM `article` WHERE `id` < 509964 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.011872s ]
  15. SELECT * FROM `article` WHERE `id` < 509964 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.017550s ]
0.307835s