当前位置:首页>python>Python 零基础100天—Day13 函数基础

Python 零基础100天—Day13 函数基础

  • 2026-07-02 16:44:06
Python 零基础100天—Day13 函数基础

🐍 函数基础 — 代码的乐高积木

🕐 预计用时:2-3 小时 | 🎯 目标:掌握 def、参数类型、return 和文档字符串


📖 今日目录

  1. 为什么要用函数?
  2. 定义和调用函数
  3. 参数:位置参数
  4. 参数:默认值
  5. 参数:关键字参数
  6. return 返回值
  7. 文档字符串(docstring)
  8. 函数的返回值进阶
  9. 实战练习
  10. 今日小结

1. 为什么要用函数?

函数就是"打包好的代码"——写一次,用无数次。

想象你每天早上要做三件事:泡咖啡、烤面包、煎鸡蛋。没有函数的话,每天都要重复写一遍步骤。有了函数,你只需要说一声"做早餐",三件事自动完成。

# ❌ 没有函数:重复代码print("=" * 30)print("欢迎来到商店A")print("=" * 30)# ... 100行代码后 ...print("=" * 30)print("欢迎来到商店B")print("=" * 30)# ✅ 有函数:复用代码def print_welcome(name):    print("=" * 30)    print(f"欢迎来到{name}")    print("=" * 30)print_welcome("商店A")print_welcome("商店B")
对比
不用函数
用函数
代码复用
复制粘贴
调用函数
修改维护
改 N 处
改 1 处
可读性
一大坨代码
见名知意
调试
到处找 bug
定位到函数

2. 定义和调用函数

📖 基本语法

# 定义函数def greet():    print("你好!")    print("欢迎光临!")# 调用函数greet()   # 你好! 欢迎光临!greet()   # 可以调用无数次

函数定义的四个要素:

要素
说明
示例
def
关键字,声明定义函数
def greet():
函数名
遵循变量命名规则
greet
参数
括号里的输入(可以为空)
(name)
函数体
缩进的代码块
print("hi")
# 定义 vs 调用def say_hello(name):       # ← 定义(不执行代码)    print(f"Hello, {name}!")say_hello("张三")           # ← 调用(才执行代码)say_hello("李四")           # ← 再次调用

💡 常见新手错误:定义了函数但忘了调用。def greet(): print("hi") ← 这行什么都不会打印!必须写 greet() 才会执行。


3. 参数:位置参数

位置参数是最基本的参数类型——按顺序传入。

# 一个参数def greet(name):    print(f"你好,{name}!")greet("张三")   # 你好,张三!greet("李四")   # 你好,李四!# 多个参数def introduce(name, age, city):    print(f"我叫{name},{age}岁,来自{city}")introduce("张三", 25, "北京")   # 顺序很重要!introduce("北京", 25, "张三")   # ❌ 顺序错了,意思全变

🔢 参数数量检查

def add(a, b):    return a + badd(1, 2)      # ✅ 正确# add(1)       # ❌ TypeError: 缺少参数# add(1, 2, 3) # ❌ TypeError: 参数太多

4. 参数:默认值

给参数一个"备胎"值——调用时不传就用默认值。

# 有默认值的参数def greet(name, greeting="你好"):    print(f"{greeting},{name}!")greet("张三")              # 你好,张三!(用默认值)greet("张三", "早上好")     # 早上好,张三!(用传入的值)# 多个默认值def create_user(name, age=18, city="未知", role="学生"):    print(f"用户: {name}, 年龄: {age}, 城市: {city}, 角色: {role}")create_user("张三")                          # 全部用默认值create_user("李四", 25)                      # 只改年龄create_user("王五", city="上海")             # 跳过 age,改城市(关键字参数)create_user("赵六", 30, "广州", "老师")      # 全部自定义

⚠️ 重要规则:有默认值的参数必须放在没有默认值的参数后面!

def greet(name, greeting="你好"):   # ✅ 正确def greet(greeting="你好", name):   # ❌ SyntaxError!

原因:Python 从左到右匹配参数,如果默认值在前面,它不知道哪个值传给谁。

⚠️ 默认值的陷阱:可变对象

# ❌ 危险:默认值用可变对象(列表、字典)def add_item(item, items=[]):    items.append(item)    return itemsprint(add_item("苹果"))   # ['苹果']print(add_item("香蕉"))   # ['苹果', '香蕉'] ← 咩?!print(add_item("橘子"))   # ['苹果', '香蕉', '橘子'] ← 更离谱!# 原因:默认列表只创建一次,所有调用共享同一个列表对象
# ✅ 正确写法:用 None 作为默认值def add_item(item, items=None):    if items is None:        items = []       # 每次调用都创建新列表    items.append(item)    return itemsprint(add_item("苹果"))   # ['苹果']print(add_item("香蕉"))   # ['香蕉'] ← 正确了!

💡 黄金法则:函数的默认值永远不要用可变对象(列表、字典、集合)。用 None 代替,在函数体内再创建。


5. 参数:关键字参数

关键字参数让你可以"指名道姓"地传值,不用管顺序。

def create_profile(name, age, city, hobby):    print(f"姓名: {name}, 年龄: {age}, 城市: {city}, 爱好: {hobby}")# 位置参数:按顺序create_profile("张三", 25, "北京", "编程")# 关键字参数:按名字create_profile(hobby="编程", name="张三", city="北京", age=25)# 混合使用:位置参数在前,关键字参数在后create_profile("张三", 25, hobby="编程", city="北京")

💡 什么时候用关键字参数?1. 参数多、容易搞混顺序时2. 调用不常见的函数时(提高可读性)3. 有默认值、只想改其中几个时


6. return 返回值

print 是给人看的,return 是给程序用的。

# 没有 return 的函数,返回 Nonedef greet(name):    print(f"你好,{name}")result = greet("张三")    # 打印: 你好,张三print(result)              # None ← 函数没有 return,返回 None# 有 return 的函数,返回值def add(a, b):    return a + bresult = add(3, 5)print(result)              # 8 ← return 的值被拿到

📦 return 的用法

# 返回单个值def square(n):    return n * nprint(square(5))  # 25# 返回多个值(实际返回一个元组)def min_max(numbers):    return min(numbers), max(numbers)lo, hi = min_max([3, 1, 4, 1, 5, 9])print(f"最小: {lo}, 最大: {hi}")   # 最小: 1, 最大: 9# 返回不同类型的值def divide(a, b):    if b == 0:        return None           # 除以零返回 None    return a / b              # 正常返回结果print(divide(10, 3))   # 3.333...print(divide(10, 0))   # None# 提前返回(early return)def check_age(age):    if age < 0:        return "年龄不能为负数"   # 提前退出    if age < 18:        return "未成年"    if age < 65:        return "成年人"    return "老年人"print(check_age(25))   # 成年人print(check_age(-5))   # 年龄不能为负数

💡 print vs return 区别:

print
return
作用
在屏幕上显示
把值交给调用者
能存变量
❌(存的是 None)
能继续计算
用途
调试、展示
函数输出

7. 文档字符串(docstring)

docstring 是函数的"说明书"——告诉别人(和未来的自己)这个函数干什么。

def calculate_bmi(weight, height):    """    计算 BMI(身体质量指数)    参数:        weight (float): 体重,单位:千克        height (float): 身高,单位:米    返回:        float: BMI 值    示例:        >>> calculate_bmi(70, 1.75)        22.86    """    bmi = weight / (height ** 2)    return round(bmi, 2)# 查看文档help(calculate_bmi)print(calculate_bmi.__doc__)# 使用result = calculate_bmi(70, 1.75)print(f"BMI: {result}")   # BMI: 22.86

📝 docstring 的格式

# 单行 docstring(简单函数)def double(n):    """返回 n 的两倍。"""    return n * 2# 多行 docstring(复杂函数)def process_data(data, threshold=0.5, mode="filter"):    """    处理数据并返回结果。    根据阈值和模式对数据进行过滤或转换。    Args:        data: 输入数据列表        threshold: 阈值,默认 0.5        mode: 处理模式,'filter' 或 'transform'    Returns:        list: 处理后的数据    Raises:        ValueError: 当 mode 不是 'filter' 或 'transform' 时    """    if mode not in ("filter", "transform"):        raise ValueError(f"无效模式: {mode}")    if mode == "filter":        return [x for x in data if x > threshold]    else:        return [x * threshold for x in data]

💡 好的 docstring 三要素:1. 一句话描述:这个函数做什么2. 参数说明:每个参数是什么意思3. 返回值:返回什么养成写 docstring 的习惯,三个月后的你会感谢现在的自己。


8. 函数的返回值进阶

🔄 返回多个值

# Python 可以一次返回多个值(本质是返回元组)def get_name_age():    return "张三", 25result = get_name_age()print(result)        # ('张三', 25)  ← 元组print(type(result))  # <class 'tuple'># 解包接收name, age = get_name_age()print(name)   # 张三print(age)    # 25

🎯 返回布尔值的函数

# 习惯:以 is/has/can 开头def is_even(n):    """判断是否偶数"""    return n % 2 == 0def has_vowel(text):    """判断是否包含元音"""    vowels = "aeiouAEIOU"    return any(c in vowels for c in text)def can_vote(age):    """判断是否可以投票"""    return age >= 18print(is_even(4))        # Trueprint(has_vowel("bcdf"))  # Falseprint(can_vote(20))       # True# 直接用在条件判断中if is_even(10):    print("是偶数")

🔄 函数作为参数

# 函数可以当参数传给另一个函数def apply(func, value):    return func(value)def double(x):    return x * 2def square(x):    return x ** 2print(apply(double, 5))   # 10print(apply(square, 5))   # 25

9. 实战练习

🎯 练习 1:温度转换工具

def celsius_to_fahrenheit(celsius):    """    摄氏度转华氏度    公式: F = C × 9/5 + 32    """    return celsius * 9 / 5 + 32def fahrenheit_to_celsius(fahrenheit):    """    华氏度转摄氏度    公式: C = (F - 32) × 5/9    """    return (fahrenheit - 32) * 5 / 9def temperature_advice(celsius):    """根据温度给出穿衣建议"""    if celsius < 0:        return "🥶 极寒!穿羽绒服、戴帽子手套"    elif celsius < 10:        return "🧥 很冷!穿厚外套"    elif celsius < 20:        return "👔 凉爽!穿长袖"    elif celsius < 30:        return "👕 温暖!穿短袖"    else:        return "🥵 炎热!注意防晒多喝水"# 测试temps_c = [0, 15, 25, 37, -10]for c in temps_c:    f = celsius_to_fahrenheit(c)    advice = temperature_advice(c)    print(f"  {c:5.1f}°C = {f:5.1f}°F | {advice}")

🎯 练习 2:密码强度检查器

def check_password_strength(password):    """    检查密码强度    评分标准:    - 长度 >= 8: +1分    - 包含大写字母: +1分    - 包含小写字母: +1分    - 包含数字: +1分    - 包含特殊字符: +1分    返回: (分数, 等级, 详细信息)    """    score = 0    details = []    # 检查长度    if len(password) >= 8:        score += 1        details.append("✅ 长度足够")    else:        details.append("❌ 长度不足8位")    # 检查大写字母    if any(c.isupper() for c in password):        score += 1        details.append("✅ 包含大写字母")    else:        details.append("❌ 缺少大写字母")    # 检查小写字母    if any(c.islower() for c in password):        score += 1        details.append("✅ 包含小写字母")    else:        details.append("❌ 缺少小写字母")    # 检查数字    if any(c.isdigit() for c in password):        score += 1        details.append("✅ 包含数字")    else:        details.append("❌ 缺少数字")    # 检查特殊字符    special = "!@#$%^&*()_+-=[]{}|;:',.<>?"    if any(c in special for c in password):        score += 1        details.append("✅ 包含特殊字符")    else:        details.append("❌ 缺少特殊字符")    # 评级    levels = {0: "极弱", 1: "弱", 2: "一般", 3: "中等", 4: "强", 5: "极强"}    level = levels[score]    return score, level, details# 测试passwords = ["123456", "abcdef", "Abc12345", "MyP@ss2024!"]for pwd in passwords:    score, level, details = check_password_strength(pwd)    stars = "⭐" * score    print(f"\n密码: {pwd}")    print(f"  评分: {score}/5 {stars}")    print(f"  等级: {level}")    for d in details:        print(f"  {d}")

🎯 练习 3:数学工具箱

def factorial(n):    """计算阶乘 n!"""    if n < 0:        return None    result = 1    for i in range(1, n + 1):        result *= i    return resultdef fibonacci(n):    """生成前 n 个斐波那契数"""    if n <= 0:        return []    if n == 1:        return [0]    fib = [0, 1]    for i in range(2, n):        fib.append(fib[i-1] + fib[i-2])    return fibdef is_prime(n):    """判断是否为素数"""    if n < 2:        return False    for i in range(2, int(n ** 0.5) + 1):        if n % i == 0:            return False    return Truedef primes_in_range(start, end):    """返回范围内的所有素数"""    return [n for n in range(start, end + 1) if is_prime(n)]# 测试print(f"5! = {factorial(5)}")                    # 120print(f"斐波那契前10个: {fibonacci(10)}")         # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]print(f"17是素数? {is_prime(17)}")                # Trueprint(f"1-50的素数: {primes_in_range(1, 50)}")    # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

10. 今日小结

知识点
核心内容
定义函数
def 函数名(参数):
 + 缩进函数体
位置参数
按顺序传入,数量必须匹配
默认值参数
def f(x, y=10)
,有默认值的放后面
关键字参数
f(name="张三", age=25)
,指名道姓不怕乱序
return
返回值给调用者;不写 return 返回 None
多返回值
return a, b
 → 返回元组,可解包
文档字符串
"""描述"""
,函数说明书
布尔函数
is_
/has_/can_ 开头

🧠 记忆口诀:def 定义函数名,括号里面放参数。位置参数按序传,默认参数放后边。return 给值别忘写,None 返回没有它。docstring 写说明,三个月后不抓瞎。

🔮 预告: Day 14 函数进阶 — *args/**kwargs、变量作用域(global/nonlocal)、lambda 匿名函数。从"会写函数"到"写好函数"的关键一步!

轻松时刻:

请在微信客户端打开

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 10:53:25 HTTP/2.0 GET : https://f.mffb.com.cn/a/495044.html
  2. 运行时间 : 0.245667s [ 吞吐率:4.07req/s ] 内存消耗:4,723.73kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cdd172d09de2954d7afbf9d4e00f63e4
  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.001061s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001479s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000731s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000639s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001364s ]
  6. SELECT * FROM `set` [ RunTime:0.000677s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002098s ]
  8. SELECT * FROM `article` WHERE `id` = 495044 LIMIT 1 [ RunTime:0.002531s ]
  9. UPDATE `article` SET `lasttime` = 1783047205 WHERE `id` = 495044 [ RunTime:0.013259s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.003715s ]
  11. SELECT * FROM `article` WHERE `id` < 495044 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.007521s ]
  12. SELECT * FROM `article` WHERE `id` > 495044 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001160s ]
  13. SELECT * FROM `article` WHERE `id` < 495044 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008950s ]
  14. SELECT * FROM `article` WHERE `id` < 495044 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.018912s ]
  15. SELECT * FROM `article` WHERE `id` < 495044 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009007s ]
0.249440s