当前位置:首页>python>Python开发:戒掉Java固化写法:告别无脑循环与过度if,Python业务代码轻量化改造

Python开发:戒掉Java固化写法:告别无脑循环与过度if,Python业务代码轻量化改造

  • 2026-07-02 16:29:10
Python开发:戒掉Java固化写法:告别无脑循环与过度if,Python业务代码轻量化改造
从Java转Python易受Java编码思维影响,存在严重的写法固化问题,习惯将Java冗余的编码范式照搬至Python业务开发中。Java依赖传统for循环、多层if-else嵌套、繁琐条件校验的写法,适配其强类型、重工程层级的特性,却与Python简洁高效、轻量化快速开发的核心理念严重相悖。这也导致大量业务代码出现“形似Python,神似Java”的问题,简单的数据筛选、逻辑校验、数据转换场景,代码冗余臃肿、嵌套层级过深,可读性与可维护性大幅降低,不仅浪费Python原生语法优势,还极易滋生隐性bug,拉高项目迭代与维护成本。Python内置推导式、高阶函数、优雅空值处理、简化语法糖等特性,能够高效替代传统循环与多层判断。
本文聚焦日常业务开发高频场景,摒弃Java固化编码陋习,讲解Python轻量化代码改造思路,帮助开发者摆脱无脑循环、过度if嵌套的低效写法,建立纯正的Python编码思维,写出精简、优雅、高效、易维护的高质量业务代码。

一、涉及核心知识

1、列表/ 生成器推导式

作用:替代Java 里新建空集合、for 循环、if 过滤、append 整套重复代码
  • 列表推导[表达式 for 变量 in 集合 if 过滤条件]
    小数据使用,直接生成完整列表
    示例:valid = [o for o in orders if o and o["status"] != 0]
  • 生成器(表达式 for 变量 in 集合 if 过滤条件)
    大数据惰性遍历,不一次性占用内存
    示例:total = sum(o["amt"] for o in orders)

2、collections 工具集

(1)defaultdict

作用:字典找不到key 自动给默认值,删掉if key in map判断,分组统计专用
示例
from collections import defaultdictuser_sum = defaultdict(float)for o in orders:    user_sum[o["uid"]] += o["amt"]

(2)Counter

作用:一键统计元素出现次数,不用循环手动计数
示例
count = Counter(o["status"] for o in orders)

3、字典映射dict.get (key, 默认值)

作用:状态码、分支策略替代多层if-else
字典存映射关系,.get第二个参数是兜底值,自动兼容 None 空值,不用额外判空
STATUS = {0:"取消",1:"待支付",2:"已完成"}def get_text(code):    return STATUS.get(code, "未知")
进阶可存lambda 函数,实现不同分支执行不同计算逻辑。

4、卫语句(提前return /continue)

作用:反向写校验条件,提前退出,消除多层if 嵌套金字塔
def check(order):    if not orderreturn "无效"    if order["status"] == 0return "无效"    return "有效"

5、match-case(Python3.10+)

作用:多字段组合判断、区间条件,解决多重嵌套if
match (order["status"], order["amt"]):    case (0, _): return "作废"    case (1, val) if val > 1000return "大额单"

6、两种数据载体,对应Java PO/VO

(1)原生dict
一次性临时数据,不用新建类,方法内直接组装返回
res = [{"uid":1"total":1000"tag":"大客户"}]

(2)@dataclass(标准库自带,无第三方依赖)

长期复用实体,自动生成构造、打印,支持默认值、数据校验、frozen=True不可变对象
from dataclasses import dataclass@dataclassclass OrderDTO:    uid: int    amt: float = 0

7、短路判空表达式dict.get() or 默认值

作用:简化多层判空取值,替代Java 冗长 Optional 链式代码
示例
nick = user.get("nick") or "默认昵称"
注意:合法值允许0 / 空字符串时,改用.get(key, 默认),不要用 or。

二、Java和Python对比示例

1、循环过滤(推导式替代无脑for+append)

需求:过滤非空、取消状态订单
(1)Java 原始固化写法
List<Order> validList = new ArrayList<>();for (Order order : orderList) {    if (order == nullcontinue;    if (Objects.equals(order.getStatus(), 0)) continue;    validList.add(order);}
(2)Java 优化 Stream
List<Order> validList = orderList.stream()        .filter(Objects::nonNull)        .filter(o -> !Objects.equals(o.getStatus(), 0))        .collect(Collectors.toList());
(3)Python 推导式
order_list = [{"status":0}, {"status":1}, None]# 列表推导valid_orders = [o for o in order_list if o and o["status"] != 0]# 大数据用生成器,省内存amount_gen = (o["amount"] for o in valid_orders if o["amount"] > 0)

2、分组累加统计(defaultdict 消除 key 判断 if)

需求:按用户ID 汇总订单金额
(1)Java 原始固化写法
Map<Long, BigDecimal> userTotal = new HashMap<>();for (Order o : orderList) {    Long uid = o.getUserId();    BigDecimal amt = o.getAmount();    if (userTotal.containsKey(uid)) {        userTotal.put(uid, userTotal.get(uid).add(amt));    } else {        userTotal.put(uid, amt);    }}
(2)Java 种优化
// 简化版:getOrDefault,依旧重复调用getuserTotal.put(uid, userTotal.getOrDefault(uid, BigDecimal.ZERO).add(amt));// Stream复杂分组收集器,学习成本极高Map<Long, BigDecimal> userTotal = orderList.stream()    .collect(Collectors.groupingBy(Order::getUserId,        Collectors.reducing(BigDecimal.ZERO, Order::getAmount, BigDecimal::add)));
(3)Python defaultdict
from collections import defaultdictfrom decimal import Decimaluser_total = defaultdict(Decimal)for o in order_list:    user_total[o["user_id"]] += Decimal(str(o["amount"]))# 转为普通字典对外返回result = dict(user_total)

3、多状态分支(字典映射替代if-else 金字塔)

需求:状态码转中文文案
(1)Java 原始固化写法
public String getStatusText(Integer code) {    if (code == 0return "已取消";    else if (code == 1return "待支付";    else if (code == 2return "已完成";    return "未知状态";}
(2)Java 最优优化(静态 Map 常量类)
// 需要新建独立类文件 OrderConstant.javapublic class OrderConstant {    private static final Map<IntegerStringSTATUS_MAP = Map.ofEntries(            entry(0"已取消"), entry(1"待支付"), entry(2"已完成")    );    public static String getStatusText(Integer code) {        if (code == nullreturn "未知状态";        return STATUS_MAP.getOrDefault(code, "未知状态");    }}
(3)Python 字典映射
# 同文件直接定义,无需新建文件STATUS_MAP = {0"已取消"1"待支付"2"已完成"}def get_status_text(code):    # 自动兼容code=None,一行兜底    return STATUS_MAP.get(code, "未知状态")

4、多层嵌套if(卫语句摊平层级)

需求:校验订单是否有效
(1)Java 原始嵌套写法(金字塔)
public String checkOrder(Order o) {    if (o != null) {        if (!Objects.equals(o.getStatus(), 0)) {            if (o.getAmount().compareTo(BigDecimal.ZERO) > 0) {                return "有效";            }        }    }    return "无效";}
(2)Java 优化卫语句(语法支持但很少人习惯)
public String checkOrder(Order o) {    if (o == nullreturn "无效";    if (Objects.equals(o.getStatus(), 0)) return "无效";    if (o.getAmount().compareTo(BigDecimal.ZERO) <= 0return "无效";    return "有效";}
(3)Python 标准卫语句(社区强制推荐)
def check_order(order):    if not order:        return "无效"    if order["status"] == 0:        return "无效"    if order["amount"] <= 0:        return "有效"    return "有效"

5、数据实体封装(@Data vs dict / @dataclass)

需求:承载订单结构化数据
(1)Java 固化写法 Lombok @Data
// 单独文件,依赖lombok第三方包+IDE插件import lombok.Data;import java.math.BigDecimal;@Datapublic class OrderPO {    private Long userId;    private BigDecimal amount;    private Integer status;}
(2)Java 替代:Record(Java16+)
// 依旧需要新建独立文件,无法临时定义publicrecordOrderRecord(Long userId, BigDecimal amount, Integer status) {}
(3)Python 两套方案
临时一次性数据:直接dict,无需定义类
# 方法内临时返回,零额外文件res = [{"user_id":1"total"1000"tag""大客户"}]
长期复用实体:标准库@dataclass,无第三方依赖
from dataclasses import dataclass, fieldfrom decimal import Decimal@dataclassclass OrderDTO:    user_id: int    amount: Decimal = Decimal("0")    tag_list: list = field(default_factory=list)    # 原生后置数据校验    def __post_init__(self):        if self.user_id <= 0:            raise ValueError("用户ID非法")# 开启不可变对象@dataclass(frozen=True)class OrderSnap:    user_id: int

6、复杂多条件组合判断match-case

需求:根据状态+ 金额打客户标签
(1)Java 多层嵌套 if
public String getTag(Order o) {    if (Objects.equals(o.getStatus(), 0)) return "作废";    else if (Objects.equals(o.getStatus(), 1)) {        if (o.getAmount().compareTo(new BigDecimal("1000")) > 0) {            return "大额待支付";        } else return "普通待支付";    }    return "其他";}
(2)Python match-case
def get_tag(order):    match (order["status"], order["amount"]):        case (0, _):            return "作废"        case (1, amt) if amt > 1000:            return "大额待支付"        case (1, _):            return "普通待支付"        case _:            return "其他"
7、对比总结
(1)实现特点区别

业务场景

Java 实现特点

Python 实现特点

循环过滤

可使用基础 for 循环或 Stream 流式处理,逻辑清晰

提供推导式原生语法,一行整合遍历、过滤逻辑,生成器可降低内存占用

分组金额统计

依靠 HashMap 完成聚合,可通过 getOrDefault、Stream 分组两种方式实现

内置 defaultdict 容器,自动处理字典缺失键的初始化,简化累加逻辑

状态码分支判断

可编写 if 多分支,也可抽取静态 Map 常量统一管理映射关系

字典可在当前文件内直接定义,dict.get 自带默认返回值,统一处理未知编码

多层条件校验

支持嵌套 if 判断,也可改写卫语句平铺判断层级

行业常用卫语句写法,统一反向判断提前返回,天然避免多层嵌套

结构化数据承载

采用 POJO/Record 承载数据,Lombok 可简化实体模板代码

区分两种方案,临时数据直接使用字典;长期复用实体使用标准库 dataclass

多字段复合判断

通过多层 if 嵌套完成多字段联合判断

match-case 模式匹配语法,集中处理多维度、带区间的组合条件

(2)编码逻辑思想区别

对比维度

Java 逻辑设计思想

Python 逻辑设计思想

数据承载思路

面向对象优先,所有结构化数据统一封装实体类,追求全局强约束、统一规范

按需封装,临时数据直接使用字典,仅长期复用数据才封装实体,追求灵活轻量化

遍历处理思路

分步拆解,循环、过滤、收集分为独立步骤;Stream 仅作为高阶补充方案

一体化整合,原生推导式合并遍历、过滤、转换逻辑,减少临时容器与中间变量

分支管理思路

多分支优先 if-else / 枚举;映射配置统一抽离独立常量类,全局集中维护

小型分支映射就地定义在业务代码内,就近读写,减少跨类引用成本

聚合统计思路

底层依靠 HashMap 手动处理键值判断,流式分组属于高阶复杂工具,不作为常规写法

标准库提供专用容器 defaultdict/Counter,内置聚合通用逻辑,省去重复判断代码

边界容错思路

严谨显式校验,空值、空容器全部需要手动 if 判断兜底,主动规避空指针风险

语法自带隐式容错,dict.get、布尔判定天然兼容空值,减少基础边界校验代码

代码约束取向

强约束设计,依靠类、规范、访问修饰符统一代码写法,适配大型多人长期项目

低约束灵活设计,不强制统一封装规则,适配快速迭代、中小型业务、脚本开发

复合条件处理

无原生多条件匹配语法,多字段、区间判断依赖多层 if 嵌套拆分逻辑

内置 match-case 模式匹配,原生支持多变量绑定、区间守卫,扁平化复杂组合条件

三、思维转换与改造注意点

1、思维转换核心:抛弃Java 固化 3 大惯性

(1)抛弃所有结构化数据必须建类
Java:临时统计、接口返回都新建 PO/VO;
Python:单次使用的临时数据优先dict,只有长期复用、需要类型约束时才用@dataclass,不要过度封装。
(2)抛弃for 循环万能
Java 习惯裸 for 遍历一切;
Python:过滤、映射优先推导式;只有复杂分步逻辑才用简单 for 搭配 defaultdict。
(3)抛弃多分支就堆if-else
Java 写状态翻译、策略计算第一反应 if-else;
Python:离散固定值统一用字典映射,分支代码集中配置,主干逻辑干净。

2、语法改造避坑细节

(1)不要照搬Java Stream 超长链式写法
Python 推导式可读性远优于多层链式;超长推导建议拆分为临时变量,可读性优先。
(2)大数据场景禁用列表推导,改用生成器
Java Stream 是惰性求值,对应 Python (x for x in ...);列表推导会一次性加载全量数据,内存占用高。
(3)defaultdict仅用于聚合统计,不要滥用
单纯查询遍历用普通dict 即可,对外返回结果建议转普通 dict,避免暴露特殊容器。
(4)@dataclass可变列表 / 字典必须使用field(default_factory=xxx)
照搬Java 直接写tag_list: list = []会出现所有实例共享同一个列表引用的 bug。
(5)字典映射不要处理区间判断
字典只适合固定离散key(状态码、枚举值);金额区间、范围判断用 match-case 或阈值列表循环。
(6)空值逻辑差异
Java 区分 null、空字符串、0;Python 布尔判定更宽松:None/[]/{}/""/0都为假,判空统一用if not x,简化代码。
(7)浮点数金额禁止直接使用float,统一 Decimal
和Java BigDecimal 同理,避免浮点精度丢失,不要照搬 Java double 写法。

3、项目规范层面改造原则

  • 3个及以上分支,强制使用字典映射,禁止 if-else 堆叠;
  • 循环内存在if key in dict判断,全部替换 defaultdict;
  • 方法内多层嵌套if,统一重构为卫语句提前 return;
  • 一次性临时返回结构体,不新建dataclass;
  • 导入尽量精简:仅在需要时导入collections、dataclasses,不全局冗余导包。

四、写在最后

1、使用列表推导式替代手动循环追加集合,大数据场景改用生成器节省内存

2、统计分组场景使用defaultdict 消除字典键存在判断,频次统计直接使用 Counter

3、离散状态、分支策略采用字典映射搭配get 方法,减少多层 if else 代码

4、数据校验逻辑采用卫语句提前返回,避免多层if 嵌套形成代码金字塔

5、多字段组合、区间条件判断使用match-case 扁平化复杂分支逻辑

6、临时一次性数据直接使用字典承载,长期复用结构化实体选用标准库dataclass

7、字典取值判空使用短路表达式简化代码,规避Java 中冗长的 Optional 链式写法

8、不要照搬Java 重型开发思维,优先使用 Python 原生轻量化语法减少样板代码

9、浮点数金额统一使用Decimal 处理,规避浮点精度丢失问题

10、对外返回容器数据时,特殊集合转换为普通字典,降低外部使用成本

如果本文对你有帮助,不妨点个赞,关注一下~欢迎在评论区留言交流,一起学习进步,共同成长!
注:本文为个人原创,AI 仅提供辅助支持。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 02:30:36 HTTP/2.0 GET : https://f.mffb.com.cn/a/502478.html
  2. 运行时间 : 0.691306s [ 吞吐率:1.45req/s ] 内存消耗:4,459.53kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f91981b07eb2995d5724896f5cd79969
  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.000404s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000521s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.016790s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.030624s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000861s ]
  6. SELECT * FROM `set` [ RunTime:0.038483s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001090s ]
  8. SELECT * FROM `article` WHERE `id` = 502478 LIMIT 1 [ RunTime:0.040590s ]
  9. UPDATE `article` SET `lasttime` = 1783017036 WHERE `id` = 502478 [ RunTime:0.066916s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001934s ]
  11. SELECT * FROM `article` WHERE `id` < 502478 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.054430s ]
  12. SELECT * FROM `article` WHERE `id` > 502478 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.054034s ]
  13. SELECT * FROM `article` WHERE `id` < 502478 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.146814s ]
  14. SELECT * FROM `article` WHERE `id` < 502478 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.120687s ]
  15. SELECT * FROM `article` WHERE `id` < 502478 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.020353s ]
0.692904s