当前位置:首页>python>《Python 从入门到精通》051|为什么一定要学函数:代码复用只是表面

《Python 从入门到精通》051|为什么一定要学函数:代码复用只是表面

  • 2026-06-30 08:01:07
《Python 从入门到精通》051|为什么一定要学函数:代码复用只是表面

从这一章开始,我们正式进入函数阶段。

很多人学 Python 学到这里,都会遇到一个很关键的转折点。

前面你已经会变量、判断、循环、列表、字典、字符串了。 很多小题你也能写出来,程序甚至已经能跑。 但你慢慢会发现一个问题:

能跑,不代表好写 写得出来,不代表写得清楚 勉强写完,不代表以后还愿意看第二遍

这时候,函数就该出场了。

很多教程一上来会说,函数的作用是代码复用。 这句话当然没错。 但如果你只把函数理解成少复制几行代码,那其实还是把它看浅了。

代码复用,只是函数最表面的价值。 函数真正厉害的地方,是它开始帮你建立一种更高级的编程方式:

把一堆乱糟糟的步骤,整理成一个个有名字、有边界、可反复调用的小能力

这一章,我们就专门把这个根问题讲透:

为什么一定要学函数 而且,为什么函数不是可学可不学的锦上添花,而是你从 会写代码 走向 会组织代码 的分水岭

一、先说一个很真实的现象:很多人不是不会写,而是越写越乱

你可能已经有这种感觉了。

比如写一个学生成绩小程序。 一开始只要打印姓名和成绩,很简单。 后来又想加平均分。 再后来想加及格判断。 再后来想加多个学生。 再后来还想把输出变整齐一点。

于是代码越堆越长,逻辑越写越挤。

比如你可能会写出这种风格的代码:

name1 = '张三'score1 = 95avg1 = score1 / 1print(f'学生{name1}的成绩是{score1},平均分是{avg1}')name2 = '李四'score2 = 88avg2 = score2 / 1print(f'学生{name2}的成绩是{score2},平均分是{avg2}')name3 = '王五'score3 = 76avg3 = score3 / 1print(f'学生{name3}的成绩是{score3},平均分是{avg3}')

这段代码不是不能跑。 它当然能跑。 但问题也非常明显:

重复 啰嗦 不好改 一旦逻辑变了,要改很多处

这就是初学者最常见的状态。

不是不会写代码, 而是写出来的代码开始越来越重、越来越散、越来越难维护。

而函数,恰恰就是解决这个问题的开始。

二、为什么“复制粘贴”看起来省事,其实最容易埋坑

很多新手前期写代码,最自然的方式就是复制粘贴。

这一段能跑,那我复制三份。 那一段有用,我再改改变量名接着用。 看起来好像很快,甚至有种效率不错的错觉。

但复制粘贴有一个很大的问题:

你复制的不是能力,而是重复

一旦后面逻辑要改,你就会开始痛苦。

比如刚才那段代码,如果你想把输出格式改一下, 不是改一处,而是改三处。 如果后面有 30 个学生,那就得改 30 处。

这还只是小事。 更麻烦的是,你很容易改漏。

有的地方改了,有的地方没改。 有的地方变量名改错了,有的地方复制时留下旧逻辑。 程序不一定马上报错,但结果可能已经悄悄不一致了。

所以函数的第一层价值,确实是复用。 但更准确地说,它不是单纯帮你少写几行字, 而是在帮你避免大量重复带来的混乱。

三、代码复用只是入口,函数真正解决的是“整理能力”

这一点特别重要。

函数不只是把重复代码包起来。 它真正厉害的地方在于:

它逼着你去思考,这一段代码到底是在做什么

比如你前面有一大段逻辑:

计算平均分 判断是否及格 打印结果

如果不用函数,你很容易只是从上往下堆。 但一旦要写成函数,你就会被迫想清楚:

它的名字叫什么 它需要什么输入 它会产出什么结果 它应该负责到哪一步为止

你看,函数一进来,代码开始不只是 运行, 而是开始有边界、有职责、有层次。

这其实已经不是语法问题了。 而是程序组织能力的问题。

所以函数真正训练你的,不只是复用, 更是拆解问题和整理逻辑的能力。

四、函数让代码从“一长坨”变成“一小块一小块”

你可以先把函数理解成一个带名字的小工具。

比如你经常要做一件事:

打印欢迎语

如果不用函数,你每次都得重新写:

name = '张三'print(f'欢迎{name}来到Python课堂')name = '李四'print(f'欢迎{name}来到Python课堂')name = '王五'print(f'欢迎{name}来到Python课堂')

你会发现,真正变化的只有名字。 剩下的逻辑其实完全一样。

这时候,如果把这件事封装成一个函数,思路就变了:

我不是在反复写欢迎语代码 我是在调用一个叫 欢迎某人 的小工具

这就是函数最本质的变化。

程序开始从 一行一行临时拼起来, 变成 一个个小能力组合起来。

这个变化看起来抽象,其实非常关键。 因为后面越是复杂程序,越离不开这种组织方式。

五、函数为什么像“工具箱”,而不是“代码片段”

这一点你要尽早建立起来。

很多新手刚开始学函数,容易把它当成:

一段被包起来的代码

这个理解不算错,但还不够。

更准确的理解应该是:

函数是一个可随时调用的小能力

比如:

计算两个数的和 格式化一个名字 判断一个成绩是否及格 清洗一条用户输入 生成一条日志文本 读取一份文件内容

这些都不是孤零零的代码片段。 它们更像是你工具箱里的一个个工具。

什么时候要用,拿出来调一下就行。 而不是每次从头再写一遍。

所以函数的真正价值,不是帮你藏代码, 而是帮你沉淀能力。

你写出来的,不再只是当前能跑的一段东西, 而是以后还能继续拿来用的一个小模块。

六、为什么学函数,才算真正开始接近“写程序”

前面你学变量、循环、判断、列表、字符串, 更像是在认识零件。

这些都很重要,没有它们,程序根本写不出来。 但只有零件,不代表你会搭结构。

函数阶段开始之后,事情就变了。

你不再只是学某个语法怎么写, 而开始学:

怎么把已有语法组织起来 怎么把重复逻辑抽出来 怎么把复杂流程拆开 怎么让程序更清晰

这就有点像搭积木了。

前面是认识积木块。 现在开始,是在学怎么搭出一个像样的形状。

所以函数特别重要,不是因为它难, 而是因为它标志着你开始从 语法学习 进入 结构学习。

七、很多初学者代码写不长,不是因为知识不够,而是没有函数意识

这是一个特别真实的现象。

很多人学了一堆基础语法后,写稍微长一点的程序就发懵。 为什么?

不是因为 if 不会 不是因为 for 不会 甚至也不是因为列表字典不会

而是因为所有逻辑全堆在一起,脑子一下就乱了。

比如:

先读输入 再判断 再处理 再输出 再统计 再保存

这些步骤一旦开始变多,如果没有函数意识,代码就会变成一条长长的流水线。 你改哪里都牵一发而动全身。

而一旦有函数意识,你就会开始自然地想:

这一段是不是能单独拆出去 这一步是不是能单独起个名字 这个逻辑以后会不会重复用 这个地方是不是应该做成一个独立功能

这就是为什么很多人不是基础语法没学够, 而是缺少一种把程序拆开的思维。

而函数,正是在帮你建立这种思维。

八、函数让你开始学会“给动作命名”

这是一个非常容易被忽略,但非常重要的能力。

比如下面这段代码:

name = '张三'score = 95if score >= 60:    print(f'{name} 及格了')else:    print(f'{name} 没及格')

这当然没问题。

但如果类似逻辑到处都出现, 你慢慢就会意识到,这一段其实在做一件明确的事:

判断一个学生是否及格,并打印结果

一旦你能说出这句话, 说明这段逻辑其实已经有了明确的动作含义。

而函数做的,正是把这个动作正式命名下来。

比如以后你可能写成:

check_pass(name, score)

你看,这一下就不再是一堆细节代码了。 而是一个带名字的动作。

给动作命名,本质上是在帮你提高抽象能力。 你开始不只是盯着每一行代码,而是开始看见这一段代码整体到底在做什么。

这对编程成长非常重要。

九、函数还能显著降低“阅读成本”

写代码不只是为了让机器跑, 更是为了让自己以后还能看懂,也让别人接手时不至于痛苦。

比如下面这种写法:

name = '张三'score = 95if score >= 60:    print(f'{name} 及格了')else:    print(f'{name} 没及格')name = '李四'score = 48if score >= 60:    print(f'{name} 及格了')else:    print(f'{name} 没及格')

当内容不多时,你还能看懂。 但一旦重复几十段,就会非常难受。

而如果它被整理成函数,阅读体验会完全不同。

因为你一眼就知道:

这里在判断及格 这里在打印学生信息 这里在计算总价 这里在清洗文本

也就是说,函数相当于给代码加了路标。 它让程序不再是一条没有分段的长文章,而开始有标题、有结构、有层次。

这就是为什么函数不仅让代码更好写,也让代码更好读。

十、函数让修改变成“一处改,全局生效”

这是函数最朴素、也最爽的一个优点。

比如你前面写欢迎语时,都是:

print(f'欢迎{name}来到Python课堂')

如果后来你想改成:

print(f'欢迎{name}同学来到Python课堂')

不用函数的话,你得把所有地方都找出来改。 用函数的话,只要改函数内部那一处,所有调用它的地方都会自动跟着更新。

这在真实开发里太重要了。

因为程序真正可怕的,不是第一次写, 而是后面不断改。

需求会变 输出会变 规则会变 格式会变

而函数最厉害的一点就是:

它把变化控制在更小的范围里

这就是为什么专业代码特别强调封装。 因为封装得越好,后期改动时痛苦越少。

十一、函数其实也在帮你减轻脑子负担

这个角度很多人没意识到,但特别重要。

人脑一次能稳定处理的东西其实有限。 如果程序所有步骤都平铺展开,你很快就会超载。

比如你在看一段很长的代码时,脑子里要同时记住:

前面定义了什么变量 中间做了什么判断 后面会不会又修改这个值 下一段是不是重复逻辑 这个地方到底是在算什么

这特别累。

而函数的好处就在于:

它允许你暂时不管细节,只先记住它的作用

比如你看到:

clean_text(data)

哪怕暂时不展开函数内部,你也知道它是在清洗文本。 看到:

print_student_info(name, score)

你也知道它是在输出学生信息。

这就相当于把很多细碎步骤压缩成一个更高层的认知单位。 脑子自然就轻松了。

所以函数不只是帮程序省代码, 也在帮人省注意力。

十二、函数为什么和“做项目”关系特别大

因为项目一旦稍微大一点,就不可能全靠从上到下堆代码。

小练习可以。 十几行、几十行的小题,当然能一路写下去。 但只要逻辑开始分层,步骤开始变多,函数就会变得几乎不可缺。

比如一个小型成绩管理系统,可能就会涉及:

录入学生信息 计算平均分 判断是否及格 打印结果 保存到文件

你会发现,这天然就该拆成几个小功能。

如果你不拆,程序就会很快膨胀成一大坨。 而一旦拆成函数,结构就出来了。

所以函数和项目开发关系特别大, 不是因为项目里非要用高级技巧, 而是因为只要想把程序写得像样一点,就很难绕开函数。

十三、函数和前面学过的内容,其实是自然连接的

你可以把函数理解成一个组织者。

前面你学的 if、for、列表、字典、字符串,这些都像单独工具。 函数不是来替代它们的,而是把它们组织起来。

比如你写一个清洗文本的函数,里面可能会用到:

strip()replace()split()循环 判断 列表 字典

你看,函数本身并不神秘。 它只是给这些已有工具搭了一个壳,让它们变成一个可反复使用的小流程。

所以函数阶段不是突然冒出来的新世界。 它其实是在把你前面学过的所有基础知识,往更有结构的方向推进一步。

十四、如果不学函数,后面会越来越吃力

这句话一点都不夸张。

因为前面的基础知识,越往后用,越需要组织。 而函数恰恰就是最基础的组织手段。

如果不学函数,你后面写代码很容易出现这些问题:

重复逻辑越来越多 代码越来越长 一改就牵连一大片 自己都不想回头看 稍微大一点的程序就容易崩心态

很多人卡在“我会基础语法,但我写不出像样程序”这个阶段, 其实很大一部分原因就是函数意识没建立起来。

所以函数不是后面有空再学的内容。 它是你继续往上走时必须迈过去的一步。

十五、这一章最该建立的,不是语法感,而是需求感

现在你还没正式开始写 def。 但在学语法之前,更重要的是先建立一个意识:

当你发现某段逻辑会重复 当你发现某一步有明确作用 当你发现程序开始变长变乱 就应该开始想,这里是不是该用函数了

这就是函数的需求感。

很多人学完函数语法,还是不会用。 问题往往不是 def 不会写, 而是根本不知道什么时候该想到函数。

所以这一章最重要的,不是让你现在立刻会定义所有函数, 而是让你脑子里先长出一个提醒机制:

这里可以拆 这里值得封装 这里不该再复制粘贴了

这个意识一旦有了,后面的函数语法才会真正落地。

十六、你可以把函数理解成“给一段逻辑取名字”

这是一个特别适合初学者的理解方式。

比如有一段代码是在:

打印欢迎语

那它其实就可以被理解成一个名字:

欢迎某人

有一段代码是在:

统计列表元素个数并输出结果

那它其实就可以被理解成一个名字:

统计并输出数量

有一段代码是在:

清洗一条原始文本记录

那它其实也可以被理解成一个名字:

清洗记录

所以函数并不神秘。 它本质上就是:

把一段逻辑提出来,赋予它一个明确的名字和边界

这样你以后要用这段能力时,不再需要重新把内部步骤铺开, 只要调用这个名字就行。

这就是为什么函数特别像给程序积木命名。

十七、从这一章开始,你的学习重心会发生变化

前面的阶段,你更多是在学:

某个语法怎么写 某个数据类型怎么用 某个方法有什么效果

而函数阶段开始之后,你会慢慢开始学:

怎么组织逻辑 怎么设计输入输出 怎么拆分复杂步骤 怎么让代码更有层次

这意味着你的学习重心会从 单点语法,逐渐转向 结构组织。

这一步特别关键。

因为这才是真正接近 编程能力 的部分。 不是只会几个语法点,而是能不能把它们有结构地用起来。

十八、练习题:先别急着写函数,先练“看出哪里该有函数”

这一章先不要求你正式定义函数。 但你可以先练一种非常重要的能力:

识别哪些地方适合封装成函数

比如看下面这些需求,想一想哪些地方明显可以做成一个函数。

1. 批量打印多个学生的姓名和成绩

这里重复动作很明显。 打印学生信息 这件事就很适合抽成函数。

2. 清洗多条用户输入的数据

这里 清洗一条数据 的逻辑非常适合抽成函数。 然后外层批量处理时去反复调用。

3. 计算多个商品的折后价

这里 计算折后价 就是一个很自然的小功能。

4. 判断多位同学是否及格

这里 判断是否及格并输出结果 也很适合封装。

你可以先训练自己识别这种 重复逻辑 和 明确动作。 这会比一上来死背 def 更有价值。

十九、本章小结

这一章最重要的,不是具体语法,而是先把函数为什么存在这件事讲透。

你要记住:

函数当然能做代码复用, 但代码复用只是它最表面的价值。

函数更深层的意义在于:

它帮你减少重复 帮你整理逻辑 帮你给动作命名 帮你让代码更容易阅读 帮你把修改集中在更小的范围 帮你把大问题拆成一个个小能力

从这一章开始,你的 Python 学习会进入一个非常关键的新阶段。 前面你是在认识工具。 从现在起,你要开始学着组织工具、组合工具、封装工具。

这就是函数阶段真正重要的地方。

下一章我们继续讲 如何定义函数:def 背后的核心思想。 到那一章,你会真正开始动手把一段逻辑封装起来,第一次清晰地看到:原来程序真的可以写得更像工具箱,而不只是流水账。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 19:18:24 HTTP/2.0 GET : https://f.mffb.com.cn/a/493299.html
  2. 运行时间 : 0.164190s [ 吞吐率:6.09req/s ] 内存消耗:4,771.86kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0a54fec7f1b21a3a27be1ea3288fe0eb
  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.001009s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001599s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001170s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001099s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001471s ]
  6. SELECT * FROM `set` [ RunTime:0.003537s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001484s ]
  8. SELECT * FROM `article` WHERE `id` = 493299 LIMIT 1 [ RunTime:0.003898s ]
  9. UPDATE `article` SET `lasttime` = 1783077504 WHERE `id` = 493299 [ RunTime:0.033202s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000717s ]
  11. SELECT * FROM `article` WHERE `id` < 493299 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001237s ]
  12. SELECT * FROM `article` WHERE `id` > 493299 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002097s ]
  13. SELECT * FROM `article` WHERE `id` < 493299 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002234s ]
  14. SELECT * FROM `article` WHERE `id` < 493299 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.012079s ]
  15. SELECT * FROM `article` WHERE `id` < 493299 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006991s ]
0.167920s