当前位置:首页>python>Python 3.15 新特性:TypedDict升级!终结字典类型混乱

Python 3.15 新特性:TypedDict升级!终结字典类型混乱

  • 2026-08-21 16:31:26
Python 3.15 新特性:TypedDict升级!终结字典类型混乱

承接项目开发、代码修改、环境配置、网站搭建(微信:bader_guy)

适配版本:Python 3.15+

一、前言:TypedDict 多年的类型盲区

自从 Python 3.8 引入 TypedDict,我们终于能给字典的每个键做精确类型标注。但十几年来,TypedDict 一直有一个致命的类型盲区:额外键值对完全不受控

旧版 TypedDict 存在三大顽疾:

  • 额外键类型未知:运行时字典可以有任意额外键,但类型系统完全无法标注它们的值类型

  • 无法彻底封闭:不能声明「这个字典只能有这几个键,多一个都不行」

  • 方法返回类型模糊.values().items() 只能推断出 Any,类型信息直接丢失

Python 3.15 正式落地 PEP 728,新增 extra_items 和 closed 两个类参数,从类型系统层面彻底解决了这些问题。


二、为什么我们需要 extra_items?

我们用真实代码场景,直观展示旧版 TypedDict 的痛点,以及新版特性的解决效果。

2.1 痛点一:额外键值对类型完全失控

最常见的场景:API 返回数据,固定字段有明确类型,但扩展字段的值类型也需要约束。

❌ Python 3.14 及以下(类型完全丢失)

from typing import TypedDict

class UserInfo(TypedDict):

idint

namestr

def process_user(userUserInfo):

# 额外字段类型完全未知,类型检查器直接放行任何操作

user["extra_field"] = "随便写什么都不报错"user["another"] = 12345# .values() 返回类型是 object / Any

for in user.values():

v.xxx_不存在的方法()  # 类型检查器无法发现错误

旧版 TypedDict 只校验「声明过的键」,额外键完全处于无政府状态,类型安全形同虚设。

✅ Python 3.15 extra_items 精准约束

from typing import TypedDict

class UserInfo(TypedDictextra_items=str):

idint

namestr

def process_user(userUserInfo):

# ✅ 合法:额外字段值必须是字符串

user["email"] = "test@example.com"# ❌ 类型报错:int 不能赋值给 str 类型的额外键user["age"] = 25# ✅ .values() 精确推断为 str | intfor in user.values(): print(v)

2.2 痛点二:无法定义「严格封闭」的字典

配置对象、DTO 数据传输对象,往往要求严格的键集合,不允许有任何额外字段。旧版 TypedDict 做不到。

❌ 旧版:字面量检查宽松,结构子类型化可绕过

class Config(TypedDict):

hoststr

portint

# 字面量写法:多写键会报错(仅字面量检查)

confConfig = {"host""localhost""port"8080"debug"True}

# 但通过变量赋值可以轻松绕过,类型系统不报错

full_conf = {"host""localhost""port"8080"debug"True}

conf2Config = full_conf# 旧版不报错!额外键被静默忽略

✅ Python 3.15 closed=True 彻底封闭

class Config(TypedDictclosed=True):

hoststr

portint

# ❌ 字面量多写键:报错

confConfig = {"host""localhost""port"8080"debug"True}

# ❌ 变量赋值:同样报错,彻底封死绕过路径

full_conf = {"host""localhost""port"8080"debug"True}

conf2Config = full_conf# 类型错误:closed TypedDict 不允许额外键

本质区别:closed=True 等价于 extra_items=Never,从类型系统层面声明「不存在任何额外键」,结构子类型化也无法突破。

2.3 全维度对比表

能力维度Python 3.14 旧版 TypedDictPython 3.15 + extra_itemsPython 3.15 + closed
已知键类型校验
额外键值类型约束
❌ 完全无约束
✅ 精确指定类型
✅ 禁止任何额外键
.values() 返回类型
❌ Any / object
✅ 联合类型精确推断
✅ 精确联合类型
结构子类型化限制
❌ 宽松,可绕过
✅ 值类型必须兼容
✅ 严格禁止额外键
适用场景
简单数据结构
带扩展字段的 API 数据
严格配置、DTO 对象

三、Python 3.15 TypedDict 新特性完整实战教程

3.1 extra_items 基础用法

extra_items 是 TypedDict 的类参数,用于声明所有未显式定义的键,其值必须符合的类型

from typing import TypedDict

class ApiResponse(TypedDictextra_items=str):

"""固定字段 code 为 int,其余所有扩展字段值必须为 str"""

codeint

messagestr

# ✅ 合法:固定字段正确,额外字段值为字符串

resp1ApiResponse = {

"code"200,

"message""success",

"data_id""10086",

"request_id""abc123"}

# ❌ 非法:额外字段值为 int,不符合 str 约束

resp2ApiResponse = {

"code"200,

"message""success",

"total"100# 类型错误

}

3.2 closed=True 封闭字典用法

设置 closed=True 后,TypedDict 成为封闭字典,不允许任何未声明的键存在。

class StrictConfig(TypedDictclosed=True):

hoststr

portint

debugbool

# ✅ 合法:键完全匹配

c1StrictConfig = {"host""0.0.0.0""port"80"debug"False}

# ❌ 非法:多出了 log_level 键

c2StrictConfig = {

"host""0.0.0.0",

"port"80,

"debug"False,

"log_level""info"# 类型错误

}

注意:closed=True 和 extra_items 不能同时使用。closed=True 本质上就是 extra_items=Never 的语法糖。

3.3 与 total 参数的组合使用

新参数可以和经典的 total 参数自由组合,灵活控制必填性和扩展键类型。

class UserPatch(TypedDicttotal=Falseextra_items=str):

"""所有已知键可选,额外键值必须为字符串"""

namestr

emailstr

# ✅ 合法:只传部分已知键 + 额外字符串字段patchUserPatch = {

"name""张三",

"phone""13800138000"

}

3.4 继承规则

  • extra_items 可继承:子类默认继承父类的 extra_items 类型

  • 子类可收紧约束:子类可以指定更严格的 extra_items 类型

  • closed 不自动继承:父类 closed=True,子类必须显式再次声明 closed=True

class BaseRecord(TypedDictextra_items=str | int):

idint

class UserRecord(BaseRecord):

"""继承 extra_items=str | int"""

namestr

class StrictRecord(BaseRecordclosed=True):

"""收紧为封闭字典,不允许额外键"""

namestr

3.5 运行时自省属性

定义后,可以通过两个特殊属性在运行时获取配置信息:

  • __extra_items__:额外项的类型,未设置时为 typing.NoExtraItems 哨兵

  • __closed__:是否封闭,未设置时为 None

print(ApiResponse.__extra_items__)  # str

print(StrictConfig.__closed__)      # True

print(UserInfo.__extra_items__)    # typing.NoExtraItems


四、底层源码执行逻辑:吃透 extra_items 的本质

很多人以为这只是类型检查器的规则,其实 Python 运行时也做了完整的机制支持。我们从 CPython 源码层面拆解其实现原理。

4.1 核心设计:类参数解析 + 元类处理

extra_items 和 closed 是 TypedDict 元类 TypedDictMeta 识别的特殊类关键字参数。整个处理流程发生在类定义阶段。

4.2 类定义执行流程源码级拆解

当解释器执行 class X(TypedDict, extra_items=str): 时,底层经历以下步骤:

  1. 类创建前:参数提取

    元类 __new__ 方法从类定义的关键字参数中,提取出 extra_items 和 closed,其余参数交给父类处理。

  2. 参数互斥校验

    检查 closed 和 extra_items 是否同时设置,如果同时设置则抛出 TypeError,因为二者语义冲突。

  3. closed 语义转换

    如果 closed=True,底层等价于将 extra_items 设为 typing.Never,表示「不存在任何额外键」。

  4. 属性挂载

    将解析结果分别挂载到类的 __extra_items__ 和 __closed__ 属性上,供运行时自省和类型检查器读取。

  5. 继承合并

    如果当前类未显式设置 extra_items,则从父类继承该值,保持类型约束的传递性。

4.3 核心底层逻辑伪代码(还原 CPython 实现)

# typing.py 中 TypedDict 元类核心逻辑(精简还原)

class TypedDictMeta(type):

def __new__(clsnamebasesns, *,

total=Trueclosed=Noneextra_items=_NoExtraItems):

# 1. 互斥校验

if closed is not None and extra_items is not _NoExtraItems:

raise TypeError("closed 和 extra_items 不能同时使用")        

# 2. closed 语义转换

if closed is True:

extra_items = Never

# 3. 继承父类的 extra_items(如果子类未显式设置)

if extra_items is _NoExtraItems:

for base in bases:

if hasattr(base'__extra_items__'):

extra_items = base.__extra_items__

break# 4. 创建类tp_dict = super().__new__(clsnamebasesns)        # 5. 挂载运行时属性tp_dict.__extra_items__ = extra_itemstp_dict.__closed__ = closedreturn tp_dict

4.4 NoExtraItems 哨兵的设计考量

为什么不用 None 表示「未设置 extra_items」?

因为 extra_items=None 是一个合法的定义——表示所有额外键的值必须是 None 类型。如果用 None 表示未设置,就会产生歧义。

因此 Python 专门设计了 typing.NoExtraItems 哨兵对象(恰好对应我们上一期讲的 sentinel 特性),专门用来表示「未声明额外项类型」这个状态。

4.5 类型检查器的工作原理

运行时只负责存储元数据,真正的类型校验发生在静态类型检查器(mypy、pyright)中:

  1. 读取 TypedDict 的 __extra_items__ 属性

  2. 遇到未声明的键时,用 extra_items 的类型去校验值

  3. 推断 .values() 返回类型时,合并「所有已知值类型 + extra_items 类型」

  4. 封闭模式下,任何额外键的出现都直接报错


五、企业级实战场景

场景1:通用 API 响应结构

固定的 code、message 字段 + 任意字符串类型的扩展字段,完美适配 REST API 返回数据。

class ApiResult(TypedDictextra_items=str | int | None):

codeint

messagestr

def success(**kwargs) -> ApiResult:

return {"code"200"message""ok", **kwargs}

场景2:严格配置校验

项目核心配置不允许出现未知键,避免拼写错误导致的静默失效。

class DatabaseConfig(TypedDictclosed=True):

hoststr

portintuserstrpasswordstrdatabasestr

场景3:动态表单数据

部分固定字段 + 动态扩展字段,常用于表单、元数据场景。

class FormData(TypedDictextra_items=str):

form_idstr

submit_timestr# 其余表单字段均为字符串类型

六、避坑指南与注意事项

  • closed 与 extra_items 互斥:二者不能同时在同一个类上声明

  • closed 不自动继承:父类封闭,子类默认不封闭,必须显式重新声明

  • 运行时不校验:和所有 TypedDict 特性一样,运行时不做类型检查,仅静态类型检查器生效

  • 已知键无需兼容 extra_items:已声明的键有自己独立的类型,extra_items 只约束未声明的键

  • 低版本不兼容:Python 3.14 及以下需使用 typing_extensions 中的版本

如果你有项目开发、代码修改、环境配置、网站搭建需求

欢迎随时私信沟通 ✉️

高效交付 · 源码完整 · 售后答疑

🐍 Python后端干货 | 持续分享实战经验

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 17:48:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/511217.html
  2. 运行时间 : 0.224746s [ 吞吐率:4.45req/s ] 内存消耗:4,923.15kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bdd019db6065ea15f28389c12e5fdf0e
  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.001064s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001390s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000639s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000605s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001156s ]
  6. SELECT * FROM `set` [ RunTime:0.000494s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001266s ]
  8. SELECT * FROM `article` WHERE `id` = 511217 LIMIT 1 [ RunTime:0.001113s ]
  9. UPDATE `article` SET `lasttime` = 1787305682 WHERE `id` = 511217 [ RunTime:0.030939s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000703s ]
  11. SELECT * FROM `article` WHERE `id` < 511217 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001138s ]
  12. SELECT * FROM `article` WHERE `id` > 511217 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001454s ]
  13. SELECT * FROM `article` WHERE `id` < 511217 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013685s ]
  14. SELECT * FROM `article` WHERE `id` < 511217 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002187s ]
  15. SELECT * FROM `article` WHERE `id` < 511217 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002139s ]
0.228977s