当前位置:首页>python>《Python 从入门到精通》094|map、filter、reduce:函数式编程入门

《Python 从入门到精通》094|map、filter、reduce:函数式编程入门

  • 2026-06-29 17:05:30
《Python 从入门到精通》094|map、filter、reduce:函数式编程入门

上一章我们讲了 lambda,已经知道它最常见的价值,不是拿来替代普通函数,而是在一些很短、很临时的场景里,快速提供一个小函数逻辑。那这一章,就轮到 lambda 最经典的一组搭档登场了:

mapfilterreduce

很多人第一次看到这三个名字,会有点发虚。总觉得这是不是特别函数式、特别抽象、特别像面试题。其实不用先给自己加难度。你先把它们翻译成人话,就会发现并不玄。

map 更像批量加工filter 更像条件筛选reduce 更像逐步合并成一个结果

这一章,我们就把这三个东西彻底讲清,而且会告诉你一个特别重要的现实判断:

它们确实有用,但不是所有场景都比普通循环或推导式更好。

所以你要学的,不只是语法,更是边界感。

一、先说一个总感觉:它们都在处理一组数据

这三个函数虽然长得不一样,但有一个共同点:

它们都不是在处理单个值,而是在处理一组数据。

比如你有一个列表:

nums = [12345]

你可能会做下面这些事:

把每个数字都乘 2 只保留其中的偶数 把它们全部加起来

你会发现,这三类需求特别常见。

第一类,是对每个元素都做同一种处理。 第二类,是按条件留下符合要求的元素。 第三类,是把一组元素一步步合成一个最终结果。

而这三类事,正好分别对应:

mapfilterreduce

所以你现在先别急着背函数名,先把这三类动作分清。

二、先讲 map:它本质上是在批量加工

先给最直接的理解:

map 的作用,就是把同一个处理规则,批量作用到一组数据上。

比如你现在有一组数字,想让每个数字都乘 2。

普通写法你已经很熟了:

nums = [1234]result = []for n in nums:    result.append(n * 2)print(result)

输出结果:

[2, 4, 6, 8]

如果用 map,可以写成这样:

nums = [1234]result = map(lambda x: x * 2, nums)print(list(result))

输出结果还是:

[2, 4, 6, 8]

这说明什么?

说明 map 的思路就是:

给我一个处理函数 再给我一组数据 我把这个函数一个个作用到每个元素上 最后得到一组新结果

这就是它最本质的动作。

三、map 的基本结构长什么样

你现在先记住这个模板:

map(函数, 可迭代对象)

比如:

map(lambda x: x * 2, nums)

意思就是:

遍历 nums每次取一个元素 交给 lambda x: x * 2 去处理 得到一组处理后的结果

你会发现,它和列表推导式有点像。 本质上都是在做批量转换。

所以你一定要建立一个很重要的认知:

map 不是凭空创造新能力,它只是另一种批量处理数据的表达方式。

四、为什么 map 的结果打印出来常常怪怪的

很多新手第一次写:

result = map(lambda x: x * 2, [123])print(result)

会发现输出的不是列表,而是一种看起来不太直观的对象表示。

这是因为在 Python 3 里,map() 返回的不是直接展开好的列表,而是一个可迭代对象。 所以如果你想真正看到里面的结果,最常见的做法是:

print(list(result))

也就是说,map() 先给你的是一个“可继续迭代的结果流”,而不是立刻摊平的列表。

你现在先不用把底层机制想太深。 先记一个实用结论就够了:

入门阶段想直接看结果时,经常会配合 list() 一起用。

五、再看几个特别典型的 map 例子

例子 1,把字符串转成大写:

words = ['python''java''go']result = map(str.upper, words)print(list(result))

输出:

['PYTHON', 'JAVA', 'GO']

这里很有意思,因为连 lambda 都不用。 直接把 str.upper 这个处理规则传进去就行了。

例子 2,把数字转成字符串:

nums = [102030]result = map(str, nums)print(list(result))

输出:

['10', '20', '30']

例子 3,把每个数字平方:

nums = [1234]result = map(lambda x: x * x, nums)print(list(result))

输出:

[1, 4, 9, 16]

你会发现,这类需求特别统一:

一组数据 同一种处理 批量得到新结果

这就是 map 最舒服的地方。

六、不过你应该马上想到一个问题:这和列表推导式不是很像吗

没错,这就是你这一章必须建立的判断力。

比如上一章我们已经写过:

nums = [1234]result = [x * 2for x in nums]print(result)

它和:

result = list(map(lambda x: x * 2, nums))

效果几乎一样。

那到底该用哪个?

对新手来说,甚至对很多日常项目来说,列表推导式通常更直观。

因为它更贴近你前面已经建立起来的阅读习惯:

遍历 处理 生成列表

而 map 更偏函数式表达。

所以你现在先别急着把所有批量处理都改成 map。 真正更成熟的结论是:

你要会 map,但也要知道很多简单场景下,列表推导式往往更清楚。

这句话特别重要。

七、现在转到 filter:它本质上是在筛选

先给最直白的理解:

filter 的作用,就是从一组数据里,筛出符合条件的元素。

比如你现在有:

nums = [123456]

你只想保留偶数。

普通写法:

nums = [123456]result = []for n in nums:if n % 2 == 0:        result.append(n)print(result)

输出:

[2, 4, 6]

如果用 filter,可以写成:

nums = [123456]result = filter(lambda x: x % 2 == 0, nums)print(list(result))

输出还是:

[2, 4, 6]

所以你现在可以先把 filter 理解成:

给我一个判断规则 再给我一组数据 我只留下那些判断结果为真的元素

这就是它的核心动作。

八、filter 的基本结构长什么样

模板很简单:

filter(函数, 可迭代对象)

这里这个函数有点特别。

在 map 里,函数返回的是“加工后的结果”。 而在 filter 里,函数返回的更像是“要不要保留”。

比如:

filter(lambda x: x % 2 == 0, nums)

这句话的意思就是:

遍历 nums每次取出一个 x判断 x % 2 == 0 是否成立 成立就留下 不成立就丢掉

所以 filter 和 map 表面上很像,但作用不一样:

map 是改造每个元素filter 是决定哪些元素留下

这一点必须分清。

九、再看几个特别典型的 filter 例子

例子 1,筛出正数:

nums = [-3-1025-78]result = filter(lambda x: x > 0, nums)print(list(result))

输出:

[2, 5, 8]

例子 2,筛出长度大于 4 的单词:

words = ['cat''python''book''banana''go']result = filter(lambda x: len(x) > 4, words)print(list(result))

输出:

['python', 'banana']

例子 3,筛出包含字母 a 的单词:

words = ['apple''dog''banana''cat']result = filter(lambda x: 'a'in x, words)print(list(result))

输出:

['apple', 'banana', 'cat']

你会发现,filter 天然适合做那种:

保留 剔除 筛选 清洗

这类动作。

十、但这里你也应该想到:这不就是带 if 的列表推导式吗

没错,又接上了。

比如上一章我们写过:

nums = [123456]result = [x for x in nums if x % 2 == 0]print(result)

这和:

result = list(filter(lambda x: x % 2 == 0, nums))

效果一样。

那到底谁更好?

和 map 一样,很多简单筛选场景下,列表推导式通常更符合直觉。

因为它把数据来源、筛选条件、结果生成全放在一个你已经熟悉的结构里。

所以对当前阶段来说,最正确的理解不是:

我以后该全部换成 filter

而是:

我要会 filter,但也要知道很多时候,带条件的列表推导式会更清晰。

这就是边界感。

十一、现在终于轮到 reduce:它最容易让人发懵,但其实也能讲得很直白

先给最简单的人话解释:

reduce 的作用,是把一组数据一步步合并,最后压缩成一个结果。

比如:

把一组数字全部加起来 把一组数字全部乘起来 把一组字符串一步步拼接起来

这些都属于“逐步合并”的动作。

和前两个不同的是:

map 输出一组新结果filter 输出筛选后的那组元素reduce 最终通常输出一个单独的结果

这是它最大的区别。

十二、先注意一个细节:reduce 不在内置里,而在 functools 里

这一点你要先记住。

如果要用 reduce,通常要这样导入:

from functools import reduce

为什么不是直接 import reduce

因为它属于标准库 functools 模块里的一个函数。

你现在不用深究历史原因。 先记住用法就够了:

用 reduce 前,通常先从 functools 导入。

十三、reduce 的最基础例子:把数字全部加起来

from functools import reducenums = [1234]result = reduce(lambda x, y: x + y, nums)print(result)

输出结果:

10

这里它是怎么工作的?

你可以先粗略理解成这样:

先拿前两个数:1 和 2,算出 3 再拿这个结果 3,和下一个数 3,算出 6 再拿 6 和下一个数 4,算出 10

最后就得到一个总结果。

这就是“逐步归并”的味道。

十四、reduce 的基本结构长什么样

模板可以先记成这样:

reduce(函数, 可迭代对象)

这里这个函数和前面的 mapfilter 又不一样。

在 reduce 里,这个函数通常接收两个参数,表示:

当前累计结果 当前新元素

比如:

lambda x, y: x + y

意思就是:

把当前累计值 x 和当前元素 y 相加 返回新的累计值

所以 reduce 的本质不是遍历后保留每一步结果, 而是每一步都把结果继续往下传,直到最后只剩一个最终值。

十五、再看几个典型的 reduce 例子

例子 1,全部相乘:

from functools import reducenums = [1234]result = reduce(lambda x, y: x * y, nums)print(result)

输出:

24

例子 2,把字符串拼接起来:

from functools import reducewords = ['I''Love''Python']result = reduce(lambda x, y: x + ' ' + y, words)print(result)

输出:

I Love Python

这些例子会帮助你建立一个感觉:

reduce 特别适合那种“把一组元素压缩成一个值”的场景。

十六、但你现在必须知道一个非常现实的判断:reduce 经常没有循环和内置函数直观

比如求和这个动作,用 reduce 写:

from functools import reducenums = [1234]result = reduce(lambda x, y: x + y, nums)print(result)

当然可以。

但你前面早就学过更自然的写法:

nums = [1234]print(sum(nums))

后者是不是明显更直观?

这就是为什么很多人学到 reduce 时,会有点疑惑:

它明明能做事,但为什么现实里没前两个那么顺手?

答案很简单:

因为很多 reduce 能干的事,Python 往往已经有更直接的内置函数。

比如求和有 sum()。 求最大值有 max()。 求最小值有 min()

所以 reduce 你当然要会,但也要知道:

很多常见场景里,它并不是第一选择。

十七、现在把这三者放在一起,区别就特别清楚了

你可以这样记:

map是一批元素进去,一批加工后的结果出来

filter是一批元素进去,留下符合条件的那批出来

reduce是一批元素进去,最后压成一个结果出来

比如对同一个列表:

nums = [1234]

map 可能变成:

[2468]

filter 可能变成:

[24]

reduce 可能变成:

10

这组对比你一旦记住,后面就很不容易混。

十八、它们和 lambda 为什么总是绑定出现

因为这三个函数通常都需要你传入一个“处理规则”。

而这个规则往往又很短、很临时。

比如:

乘 2 判断偶数 两两相加

如果每次都专门写一个正式 def,当然也可以,但有时显得有点重。

所以大家就很自然会写成:

lambda x: x * 2lambda x: x % 2 == 0lambda x, y: x + y

这也是为什么上一章讲 lambda 之后,这一章紧跟着就讲 mapfilterreduce。 它们本来就是非常经典的一组搭档。

十九、不过你一定要建立一个更成熟的结论

这一章最重要的,不是会不会写三行语法,而是建立下面这组判断。

mapfilterreduce 你都要会。 但并不代表写代码时一定优先用它们。

很多简单场景下:

列表推导式可能比 map 更清楚 带条件的列表推导式可能比 filter 更直观sum()max() 这类内置函数可能比 reduce 更合适

所以真正成熟的目标不是:

我要强行函数式

而是:

我知道这些工具的存在,并且能在合适场景下选更清楚的那个。

这才是最值钱的能力。

二十、做一个综合小案例:处理成绩数据

比如现在有一组成绩:

scores = [587690436781]

用 map 把每个成绩都转成字符串:

result1 = list(map(lambda x: f'成绩:{x}', scores))print(result1)

用 filter 筛出及格成绩:

result2 = list(filter(lambda x: x >= 60, scores))print(result2)

用 reduce 把所有成绩加起来:

from functools import reduceresult3 = reduce(lambda x, y: x + y, scores)print(result3)

这三个例子一放在一起,你就会特别清楚它们各自干什么。

一个在加工 一个在筛选 一个在归并

这就是本章最核心的结构感。

二十一、本章小练习

你可以做三个特别适合巩固的练习。

练习 1 用 map 把下面的数字列表全部乘以 10:

nums = [12345]

练习 2 用 filter 筛出下面列表里所有大于 5 的数字:

nums = [2816935]

练习 3 用 reduce 把下面的数字全部相乘:

nums = [234]

参考答案:

from functools import reducenums = [12345]result1 = list(map(lambda x: x * 10, nums))print(result1)nums = [2816935]result2 = list(filter(lambda x: x > 5, nums))print(result2)nums = [234]result3 = reduce(lambda x, y: x * y, nums)print(result3)

你把这三个练习亲手写一遍,这一章的主干就会非常稳。

二十二、本章总结

这一章最重要的,不是把三种函数写法背下来,而是分清它们各自处理数据的方式。

map 适合批量加工数据。filter 适合按条件筛选数据。reduce 适合把一组数据逐步归并成一个结果。 它们经常和 lambda 一起出现,因为都需要一个短小的处理规则。 但在很多简单场景下,列表推导式和内置函数往往更直观。 所以真正成熟的做法,不是盲目追求函数式,而是根据可读性和场景选择更合适的表达方式。

下一章我们继续往前走,进入一个很多人写过、却不一定真正理解的核心机制:095|迭代器是什么:for 循环背后的运行机制

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 02:30:10 HTTP/2.0 GET : https://f.mffb.com.cn/a/501602.html
  2. 运行时间 : 0.104667s [ 吞吐率:9.55req/s ] 内存消耗:5,138.70kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2a3027f73c36f7a96e50725c407c8971
  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.000481s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000740s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000278s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000287s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000516s ]
  6. SELECT * FROM `set` [ RunTime:0.000205s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000565s ]
  8. SELECT * FROM `article` WHERE `id` = 501602 LIMIT 1 [ RunTime:0.007146s ]
  9. UPDATE `article` SET `lasttime` = 1783017010 WHERE `id` = 501602 [ RunTime:0.016064s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.004015s ]
  11. SELECT * FROM `article` WHERE `id` < 501602 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000510s ]
  12. SELECT * FROM `article` WHERE `id` > 501602 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000484s ]
  13. SELECT * FROM `article` WHERE `id` < 501602 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000816s ]
  14. SELECT * FROM `article` WHERE `id` < 501602 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000859s ]
  15. SELECT * FROM `article` WHERE `id` < 501602 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004685s ]
0.106280s