当前位置:首页>python>Day01|AI 必会的 Python 基础

Day01|AI 必会的 Python 基础

  • 2026-06-28 02:06:42
Day01|AI 必会的 Python 基础
苦猿的大模型日记 · Day01 · 写给大模型入门者的地基课-帮普通人把AI学进简历系列

前言:别让 Python 成为你的"第一道墙"

后台收到一条私信,是个工作三年的前端同学发的。

他说:「我想转大模型,买了课、配了环境,结果第一节课老师甩过来一段 Python 代码,我连 if __name__ == "__main__" 都看不懂。」

说实话,这种焦虑我太熟悉了。

当年我从二本毕业,进的第一家公司写 Java。第一次被叫去改一段 Python 脚本,我盯着 for x in data: 发了五分钟呆——这玩意儿为啥没有花括号?

后来一路摸爬滚打到 AI 这行,我才发现一个反常识的事实:

你以为 AI 工程师天天在调算法、看论文,其实他们 80% 时间在写 Python 基础代码。

深夜,密密麻麻的教程网页,谁都懵过

那 Python 这门课,到底要学多深才能上手 AI?

我的答案是:不用全学,7 块地基打牢就行。

今天这篇文章,我把这 7 块一次性讲清楚。每一块都配真实 AI 场景的代码,你能直接抄走用。


PART 01:数据结构——AI 工程师的"语言地基"

先说一个让我后知后觉的事。

我入行前半年,把整个《Python Cookbook》啃了一遍,装饰器、元类、协程……啥都学。

结果上手做项目,发现真正每天在用的就那 4 个

  • list
     —— 序列、循环、批处理
  • dict
     —— LLM API 入参出参全是它
  • tuple
     —— 不可变、当 key 用
  • set
     —— 去重神器

就这 4 个,盖起了 90% 的 AI 项目代码

dict 是 AI 工程师的"母语"

你看一眼 OpenAI 的 Chat Completions API 是怎么调的:

from openai import OpenAIclient = OpenAI(api_key="sk-xxx")response = client.chat.completions.create(    model="gpt-4o-mini",    messages=[        {"role": "system", "content": "你是一个 Python 老师"},        {"role": "user", "content": "什么是 list comprehension?"}    ],    temperature=0.7)print(response.choices[0].message.content)

看清楚没?入参是一个大 dict(虽然是关键字参数形式),里面嵌套着 listlist 里又装着 dict

LLM 的世界,本质就是 dict 套 dict 套 list

list comprehension:批量处理的瑞士军刀

AI 项目里你天天要做的事:把一堆文本批量塞给模型

不要写 for 循环 append,太慢太丑。学会这一行:

prompts = [f"总结这段话:{text}" for text in documents]

等价于这个又长又丑的版本:

prompts = []for text in documents:    prompts.append(f"总结这段话:{text}")

功能一样,但前者是 Python 工程师的写法,后者是新手的写法。

AI 必会的 Python 数据结构脑图

set:去重一句话搞定

做 RAG(检索增强生成)的时候,你拿到一堆候选文档,里面常有重复。怎么办?

unique_docs = list(set(documents))

一行搞定。这就是 set 的价值


PART 02:函数与模块化——别再写"面条代码"了

我见过一个同事,把整个 AI 客服后端写在了一个 1400 行的脚本里。

没有函数,全是 if-else 套 if-else

后来他要加一个"按用户分级调用不同模型"的功能,改了三天,把生产环境搞挂了两次。

从那以后我立了个规矩:超过 50 行的脚本,必须拆函数。

默认参数 + **kwargs:AI 函数的标准长相

封装一个调 LLM 的函数,标配写法长这样:

def ask_llm(    prompt: str,    system: str = "你是一个助手",    model: str = "gpt-4o-mini",    temperature: float = 0.7,    **kwargs):    """调一次 LLM,返回文本结果。    kwargs 用来透传 API 的可选参数,比如 top_p、max_tokens、stream。    """    client = OpenAI()    response = client.chat.completions.create(        model=model,        messages=[            {"role": "system", "content": system},            {"role": "user", "content": prompt},        ],        temperature=temperature,        **kwargs   # ← 透传 top_p、max_tokens 等    )    return response.choices[0].message.content

注意这两个细节:

  1. 默认参数
    :调用方不需要每次都写 model="gpt-4o-mini",只有换模型时才传
  2. **kwargs
    :API 可选参数一大堆(top_pmax_tokensstreamstop...),用 **kwargs 全透传,函数永远不用改

调用起来是这样的:

# 简单调用print(ask_llm("你好"))# 高级调用,透传 max_tokens 和 stopprint(ask_llm(    "写一首关于 Python 的诗",    max_tokens=200,    stop=["。"]))

这就是 Python 函数的精髓——封装一次,无限复用。

面条代码,谁写谁哭

lambda:一行小函数

map、filter、sorted 配 lambda,处理数据时一气呵成:

# 按文本长度排序documents = ["短文本", "这是一个比较长的文本内容", "中等"]documents.sort(key=lambda x: len(x))

不用单独写个 def get_len(x): return len(x)省下来的代码就是你的命


PART 03:文件 IO 与异常处理——给 AI 应用配"安全带"

PART 01、02 讲的是"怎么写得动",PART 03 讲的是"怎么活得久"

AI 项目 90% 的事故,都和这两件事有关:

  1. API key 写在代码里,被同事推到了 GitHub 公开仓库
    (公司上头条)
  2. LLM 调用没加异常处理,限流时整个服务雪崩
    (凌晨被叫醒)

下面这套"安全带",每个 AI 工程师都要会系。

with open:安全读写文件

不要这样写:

f = open("prompt.txt", "r", encoding="utf-8")content = f.read()f.close()   # ← 万一中间报错,这行不会执行,文件句柄泄漏

要这样写:

with open("prompt.txt", "r", encoding="utf-8") as f:    content = f.read()# with 块结束自动 close,哪怕中间报错也会关

with 就是 Python 给你的"自动门"——进得去就一定出得来。

try/except:兜住所有 LLM 调用

调 LLM 必须包异常,不然网络一抖整个程序崩:

from openai import OpenAI, RateLimitError, APITimeoutErrorclient = OpenAI()def safe_ask_llm(prompt: str, retries: int = 3):    for i in range(retries):        try:            return ask_llm(prompt)        except RateLimitError:            print(f"限流了,第 {i+1} 次重试...")            time.sleep(2 ** i)   # 指数退避        except APITimeoutError:            print(f"超时了,第 {i+1} 次重试...")        except Exception as e:            print(f"未知错误:{e}")            raise    raise RuntimeError(f"重试 {retries} 次后仍失败")

这段代码我直接复制粘贴过 50 次,每一个 AI 项目里都有它的影子。

.env:密钥管理的行业标准

把 API key 写在 .py 里 = 等着上热搜。

正确姿势:

# .env 文件(注意:必须加到 .gitignore)OPENAI_API_KEY=sk-xxxDASHSCOPE_API_KEY=sk-yyy
# config.pyfrom dotenv import load_dotenvload_dotenv()   # 加载 .envimport osapi_key = os.environ["OPENAI_API_KEY"]

记住这条铁律:代码可以开源,密钥永远不入仓库。

LLM 调用安全带:加载 .env → 读 prompt → 调 API → 异常重试 → 写日志


PART 04:生成器 yield——LLM 流式输出的底层引擎

你用 ChatGPT 的时候有没有注意一个细节——

回答不是一次性弹出来的,而是一个字一个字"吐"出来的。

这个效果,在 Python 这边有个专门的名字:流式输出(streaming)

底层支撑它的,就是 yield 这个关键字。

yield vs return:一个是"边算边吐",一个是"算完再给"

先看一个最简单的对比:

# return 版本:一次性返回所有结果def get_numbers_return():    return [1, 2, 3, 4, 5]# yield 版本:一个一个吐def get_numbers_yield():    yield 1    yield 2    yield 3    yield 4    yield 5

调用方式看起来一样,但内存占用天差地别

# return 版本:内存里要同时存 1 亿个数nums = [i for i in range(100_000_000)]# yield 版本:内存里永远只有 1 个数def gen():    for i in range(100_000_000):        yield i

yield 就是 Python 给你的"流式管道"——边生产边消费,内存零压力。

真实场景:流式调用 LLM

OpenAI 的 API 支持 stream=True,返回值就是一个生成器。你 yield 出来,前端就能逐字渲染:

def stream_llm(prompt: str):    """流式输出 LLM 响应,逐 token yield"""    response = client.chat.completions.create(        model="gpt-4o-mini",        messages=[{"role": "user", "content": prompt}],        stream=True   # ← 关键    )    for chunk in response:        content = chunk.choices[0].delta.content        if content:            yield content# 用起来:用户看着字一个一个冒出来for token in stream_llm("用三句话解释什么是 Transformer"):    print(token, end="", flush=True)

这就是 ChatGPT 那种打字机效果的真相。不会 yield,你写不出 LLM 前端。

ChatGPT 那种逐字打字效果,底层就是 yield + stream=True

顺带:大文件别再 read() 了

处理几个 G 的训练数据,千万别 f.read()——会爆内存。

# 错误:一次性读完,几 G 数据进内存content = open("huge_dataset.jsonl").read()# 正确:一行一行 yield,内存恒定def read_lines(path):    with open(path, "r", encoding="utf-8") as f:        for line in f:            yield line.strip()for line in read_lines("huge_dataset.jsonl"):    process(line)   # 内存里永远只有 1 行

AI 工程师处理大数据的第一守则:能流式就别全量。


PART 05:异步 async/await——批量并发调 LLM 的加速器

讲完 yield,再讲一个性能怪兽:异步

我做过一个真实项目:要给 1000 条用户评论批量调用 LLM 做情感分析。

第一次我写的同步代码,1000 条跑了 47 分钟

后来改成异步,4 分钟跑完。10 倍加速。

同步 vs 异步:一张图看懂

  • 同步:一个一个排队,前一个不回来后一个不动
  • 异步:一起发出去,谁先回来谁先处理
# 同步:串行调用,3 次 = 3 秒def sync_call():    results = []    for p in prompts:        results.append(ask_llm(p))   # 每次 1 秒    return results# 总耗时:3 秒
# 异步:并行调用,3 次 ≈ 1 秒import asynciofrom openai import AsyncOpenAIasync_client = AsyncOpenAI()async def ask_one_async(prompt):    resp = await async_client.chat.completions.create(        model="gpt-4o-mini",        messages=[{"role": "user", "content": prompt}]    )    return resp.choices[0].message.contentasync def batch_ask(prompts):    """批量并发,速度 5-10 倍"""    tasks = [ask_one_async(p) for p in prompts]    return await asyncio.gather(*tasks)# 用起来results = asyncio.run(batch_ask(prompts))# 总耗时:约 1 秒

关键就三个词:async defawaitasyncio.gather

记住这个组合,碰到任何"批量调 API"的场景,套上去就完事。

同步串行 vs 异步并行:10 倍性能差距就来自这一步

什么时候用异步?

不是所有场景都该用异步。只有"等 IO"的场景才值

  • ✅ 调 API(网络等待)
  • ✅ 读写文件(磁盘等待)
  • ✅ 数据库查询
  • ❌ 纯 CPU 计算(异步没用,要用多进程)

LLM 项目里 90% 都是网络等待,所以异步是必修课


PART 06:装饰器 + 类型注解 + 虚拟环境——三个"加分项"变"必会项"

最后这一 PART 讲三件小事,单独看都不大,但少一个你都玩不转现代 AI 项目

装饰器 @:框架里的"语法糖"

你打开 FastAPI、Pydantic、LangChain 的代码,到处都是 @

@app.get("/chat")           # FastAPI 路由装饰器@retry(times=3)             # 自定义重试装饰器@functools.cache            # 自动缓存def some_func():    ...

装饰器的本质:用一个函数包装另一个函数,加点料再返回

实战中最常用的:自己写一个重试装饰器,给所有 LLM 调用套上:

import functoolsimport timedef retry(times=3, delay=2):    """重试装饰器,AI 调用必备"""    def decorator(func):        @functools.wraps(func)        def wrapper(*args, **kwargs):            last_err = None            for i in range(times):                try:                    return func(*args, **kwargs)                except Exception as e:                    last_err = e                    print(f"第 {i+1} 次失败:{e},{delay}秒后重试")                    time.sleep(delay)            raise RuntimeError(f"重试 {times} 次仍失败:{last_err}")        return wrapper    return decorator# 用起来,所有调 LLM 的函数自动重试@retry(times=3, delay=2)def ask_llm(prompt):    return client.chat.completions.create(...)

学会装饰器,你的代码复用率直接翻倍。

类型注解:现代 Python 的"通行证"

Python 不是强类型语言,但2024 年之后的 AI 项目,没 type hint 等于裸奔

为什么?因为 Pydantic 和 LangChain 强依赖类型注解

from pydantic import BaseModelclass Message(BaseModel):    role: str    content: strclass ChatRequest(BaseModel):    model: str = "gpt-4o-mini"    messages: list[Message]    temperature: float = 0.7# Pydantic 自动校验类型,传错直接报错req = ChatRequest(    model="gpt-4o-mini",    messages=[{"role": "user", "content": "你好"}],    temperature=0.7)

类型注解的好处

  1. IDE 自动补全、跳转、检查
  2. Pydantic / FastAPI 自动校验入参
  3. 团队协作不用猜参数类型

记住这个口诀:函数签名必加类型,变量可加可不加

虚拟环境 venv:每个 AI 项目的"第一步"

最后讲一个最朴素但最关键的——虚拟环境

不创建虚拟环境会怎样?你的全局 Python 会被各种包污染,今天装 openai 0.27,明天装 openai 1.0,项目之间互相打架。

正确姿势,每个新项目都跑一遍:

# 1. 创建虚拟环境(在项目根目录)python -m venv .venv# 2. 激活(Windows).venv\Scripts\activate# 2. 激活(Mac/Linux)source .venv/bin/activate# 3. 装依赖pip install openai python-dotenv pydantic# 4. 导出依赖清单(提交到 git)pip freeze > requirements.txt# 5. 别人 clone 项目后,一键复现环境pip install -r requirements.txt

这套流程,是 AI 工程师的"开机仪式"。每个项目都从这 5 步开始。

装饰器、类型注解、虚拟环境:三件"加分项"早已变成"必会项"


结尾:地基不牢,地动山摇

写到这里,4 块地基讲完了。

回头看,其实就这么点东西:

  • 数据结构:
    list、dict、tuple、set
  • 函数:
    默认参数 + **kwargs + lambda
  • 文件 IO
    with open
  • 异常处理
    try/except + .env 管密钥

没有任何花哨的东西。

但就是这 4 块,撑起了 ChatGPT 客户端、RAG 系统、Agent 框架、模型微调脚本——所有你能想到的 AI 应用,底层都是这些语法。

工具会变,框架会换,但 Python 这套底层语法,十年都不会过时

把地基打牢,上面盖什么楼都稳。

别再纠结"我是不是该再学一门语言"了——先把 Python 这门用透。


想听你说:

你学 Python 时被哪个概念卡得最久?是装饰器、*args/**kwargs、还是那个看一百遍还是懵的 if __name__ == "__main__"

评论区聊聊,下一篇我挑最多人问的那个,单独拆一篇讲透。

关注「苦猿的大模型日记」,下一篇:Day02 | PyTorch 入门:从装环境到跑通第一个模型

— END —苦猿 · 帮普通人把 AI 学进简历

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 09:33:55 HTTP/2.0 GET : https://f.mffb.com.cn/a/500708.html
  2. 运行时间 : 0.122548s [ 吞吐率:8.16req/s ] 内存消耗:4,676.93kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=31f07b26c01b0425477e7fca6db85151
  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.000527s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000664s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000286s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001209s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000519s ]
  6. SELECT * FROM `set` [ RunTime:0.000211s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000558s ]
  8. SELECT * FROM `article` WHERE `id` = 500708 LIMIT 1 [ RunTime:0.011011s ]
  9. UPDATE `article` SET `lasttime` = 1783042435 WHERE `id` = 500708 [ RunTime:0.008003s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000427s ]
  11. SELECT * FROM `article` WHERE `id` < 500708 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001576s ]
  12. SELECT * FROM `article` WHERE `id` > 500708 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000429s ]
  13. SELECT * FROM `article` WHERE `id` < 500708 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012728s ]
  14. SELECT * FROM `article` WHERE `id` < 500708 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010924s ]
  15. SELECT * FROM `article` WHERE `id` < 500708 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004037s ]
0.124272s