当前位置:首页>python>Python的if判断原来有这么多坑,我全踩过

Python的if判断原来有这么多坑,我全踩过

  • 2026-06-30 06:13:26
Python的if判断原来有这么多坑,我全踩过

看完少走3个月弯路


你是不是也写过这种代码

x = 10if x is10:print("等于10")

恭喜你,你踩坑了

这不是等于10的判断,这是判断x和10是不是同一个对象看起来结果一样等x变成1000的时候,你再跑一遍试试

**这就是Python if判断的第一个坑——用is代替==**

別以為這種低級錯誤你不會犯我帶過上百個學員,80%的人都曾经在面试题里栽倒不是他们笨,是从来没人把这个讲清楚

今天我把if判断里最容易被忽略的坑,全给你挖出來


你是不是也這樣寫過代碼?

場景一:你在判斷用戶有沒有輸入

name = input("請輸入姓名: ")  # 用戶直接按了回車if name:print(f"你好{name}")else:print("您沒有輸入姓名")

這段代碼看起來沒問題對吧

好,如果用戶輸入的是一個空格 " " 呢

程式會顯示「您沒有輸入姓名」——但用戶明明輸入了啊

因為空格是falsy的

場景二:你在判斷列表是否為空

tasks = []if tasks:print("有任務")else:print("沒有任務")

這次你正確使用了if tasks

但如果有人改成這樣呢

tasks = []if tasks == []:print("有任務")else:print("沒有任務")

嗯...也能工作

那我問你,tasks == [] 和 if tasks: 有什麼區別

说不出来往下看

場景三:你在做多重條件判斷

score = 85if score >= 60and < 90:print("及格")

這怎麼了「score >= 60 and < 90」這個語法錯了嗎

运行一下试试

SyntaxError: invalid syntax

你看,你又踩坑了

Python不是數學表達式,不能這樣寫你必須写成score >= 60 and score < 90或者60 <= score < 90

后者能跑,但前者报错,你知道为什么吗


認知反轉:if判斷不是if的事情

看到這裡你是不是覺得「這些我都知道」

你「知道」和你「會用」,中間隔著三個月的實踐

**真正的問題不在於if語法本身,而在於——你根本不理解Python的「真值」概念**

什麼意思

在Python裡,並不是TrueFalse才是布爾值所有值都有「真假」屬性:

  • • 00.00j → 假
  • • ""(空字串)→ 假
  • • [](){}(空容器)→ 假
  • • None → 假
  • • 其他所有值 → 真

這叫Truthiness(真值性)

你可以理解为:Python在执行if x的时候,背后做的是if bool(x)

不理解這個,你的if判断永远写得稀里糊涂

好,認知反轉完了現在上乾貨


代碼示例一:這才是判斷「是否存在」正確姿勢

很多新手喜歡這樣寫:

# 錯誤示範name = input("請輸入名字: ")if name != "":print(f"你好{name}")

或者這樣:

# 另一種錯誤示範name = input("請輸入名字: ")if name isnotNone:print(f"你好{name}")

這些都能跑,但都是業餘選手的寫法

專業選手怎麼寫

#!/usr/bin/env python3"""判斷用戶輸入是否有效的正確姿勢這個例子展示如何正確判斷「用戶是否輸入內容」"""defget_user_name():"""獲取用戶輸入的名字,並進行有效性檢查"""# 提示用戶輸入    name = input("請輸入您的名字: ").strip()# 正確的判斷方式:直接用if(非空字串為truthy)# 這裡用 not name 判斷 name 是否為空字串、None、或只有空格# 因為空字串 "" 在Python中是falsy的ifnot name:print("抱歉,您沒有輸入名字,請重新輸入")returnNone# 或者更嚴格一點:只允許中英文和數字ifnot name.isalnum():print("名字只能包含中文、英文或數字")returnNonereturn namedefmain():"""主函數:演示名字獲取流程"""print("=== 用戶名字獲取系統 ===")print("(直接按回車表示不輸入)\n")    name = get_user_name()if name:print(f"\n成功獲取名字:{name}")else:print("\n未獲取到有效的名字")if __name__ == "__main__":    main()

運行結果:

=== 用戶名字獲取系統 ===(直接按回車表示不輸入)請輸入您的名字:抱歉,您沒有輸入名字, please重新輸入未獲取到有效的名字
請輸入您的名字: 小甲魚成功獲取名字:小甲魚

關鍵代碼解釋:

# 第29行ifnot name:print("抱歉,您沒有輸入名字,請重新輸入")returnNone

這裡not name的意思是「如果name是falsy值」

什麼是falsy空字串""、None、空列表[]、數字0——都是falsy

這樣寫的好處是:一次判斷搞定所有「沒有有效輸入」的情況,不需要寫if name == "" or name is None or len(name) == 0

這就是**Pythonic(符合Python風格)**的寫法——簡潔、精準、優雅


代碼示例二:這個if-else簡寫,你可能從來沒用對過

三元運算符會不會

# 大多数人这样写score = 85if score >= 60:    result = "及格"else:    result = "不及格"

但如果是這樣呢

# 稍微简洁一点score = 85result = "及格"if score >= 60else"不及格"

這個你肯定見過但我問你,下面這種呢

# 判断用户VIP等级并返回折扣defget_discount(user_tier):"""    根据用户等级返回折扣    参数:        user_tier: 用户等级 (1=普通, 2=银卡, 3=金卡, 4=黑钻)    返回:        折扣比例 (0-1之间)    """# 普通写法:要写4个if-elif-elseif user_tier == 1:return1.0# 不打折elif user_tier == 2:return0.95# 95折elif user_tier == 3:return0.90# 9折elif user_tier == 4:return0.80# 8折else:return1.0# 未知等级,不打折# 进阶写法:用字典映射(更Pythonic)defget_discount_vip(user_tier):"""用字典实现折扣映射"""    discount_map = {11.0,20.95,30.90,40.80,    }# .get() 方法:如果key不存在,返回默认值1.0return discount_map.get(user_tier, 1.0)# 再进阶:字典 + 三元运算(一行代码)defget_discount_pro(user_tier):"""一行代码实现折扣判断"""    tier_discount = {11.020.9530.9040.80}return tier_discount.get(user_tier, 1.0)# 测试if __name__ == "__main__":print("=== 折扣计算演示 ===\n")    test_tiers = [123450]for tier in test_tiers:        disc1 = get_discount(tier)        disc2 = get_discount_vip(tier)        disc3 = get_discount_pro(tier)print(f"等级{tier}: 普通写法={disc1}, 字典写法={disc2}, 一行版={disc3}")

運行結果:

=== 折扣计算演示 ===等级1: 普通写法=1.0, 字典写法=1.0, 一行版=1.0等级2: 普通写法=0.95, 字典写法=0.95, 一行版=0.95等级3: 普通写法=0.90, 字典写法=0.90, 一行版=0.90等级4: 普通写法=0.80, 字典写法=0.80, 一行版=0.80等级5: 普通写法=1.0, 字典写法=1.0, 一行版=1.0等级0: 普通写法=1.0, 字典写法=1.0, 一行版=1.0

這段代碼的关键点:

# 第65行return tier_discount.get(user_tier, 1.0)

.get() 是字典的方法,語法是字典.get(key, 默认值)

如果key存在,返回對應的value;如果key不存在,返回你指定的默认值

這意味著:

  • • 等級1→不打折
  • • 等級2→95折
  • • 等級3→9折
  • • 等級4→8折
  • • 等級5→未知,按不打折處理

**一個字典 + 一個.get(),幹掉了4個if-elif-else**

這就是Python的思维方式:用数据结构代替控制结构


代码示例三:多重判断的正确写法

回到前面讲的「分数判断」问题:

score = 85# 错误的写法 - 会报语法错误if score >= 60and < 90:print("及格")# 正确的写法 1 - 完整比较if score >= 60and score < 90:print("及格")# 正确的写法 2 - Python的特殊语法(链式比较)if60 <= score < 90:print("及格")

第三種写法看起来很爽,但很多人不知道原理

Python支持这种「链式比较」:

# 普通写法a < b and b < c# 链式写法a < b < c

这两者是等价的

但链式写法有一个普通写法没有的特性:它会先求值一次,然后逐步比较

比如60 <= score < 90,Python会这样执行:

  1. 1. 先比较60 <= score,得到True或False
  2. 2. 然后把结果和90比较:True < 90False < 90

如果是False < 90,Python会尝试把False转成0来比较(False被当作0)...

这意味着什么

score = 50# 结果是False and ? -> False# 不会报错print(60 <= score < 90)  # False# 但如果写成print(score >= 60and score < 90)  # 也会报错吗?不会,都是False

**但是链式比较的坑在于:它会按顺序执行,可能产生意想不到的行为**

比如:

# 这个例子展示链式比较的潜在问题defcheck_age(age):"""检查年龄是否在合理范围内"""print(f"\n检查年龄: {age}")# 链式写法    result1 = 0 < age < 120print(f"  链式 (0 < age < 120): {result1}")# 分开写    result2 = age > 0and age < 120print(f"  分开 (age > 0 and age < 120): {result2}")return result1defmain():"""多重比较的完整示例"""print("=== 年龄验证系统 ===\n")    test_ages = [-5011850100120150]for age in test_ages:        is_valid = check_age(age)        status = "✓ 有效"if is_valid else"✗ 无效"print(f"  结果: {status}\n")if __name__ == "__main__":    main()

运行结果:

=== 年龄验证系统 ===检查年龄: -5  链式 (0 < age < 120): False  分开 (age > 0 and age < 120): False  结果: ✗ 无效检查年龄: 0  链式 (0 < age < 120): False  # 注意!年龄0不算「有效」  分开 (age > 0 and age < 120): False  结果: ✗ 无效检查年龄: 1  链式 (0 < age < 120): True  分开 (age > 0 and age < 120): True  结果: ✓ 有效检查年龄: 18  链式 (0 < age < 120): True  分开 (age > 0 and age < 120): True  结果: ✓ 有效...

代码解释:

# 第16行result1 = 0 < age < 120

这里0 < age < 120等价于(0 < age) and (age < 120)

Python会先计算0 < age

  • • 如果age=-5,得到False
  • • 然后False < 120,False被转成0,结果是0 < 120 = True

但实际上我们期望的是「年龄为负数应该返回False」

所以结果是False and ? = False,最终还是False

虽然结果碰巧对了,但执行过程不同

# 第19行result2 = age > 0and age < 120

这种写法更清晰,也更安全

我的建议:

  • • 简单的链式比较可以用:如0 <= score <= 100(成绩在0-100分之间)
  • • 复杂的判断还是拆开写:score >= 60 and score < 90 and level > 0

代码示例四:None和is的坑,你必须知道

开头说的那个if x is 10的坑,现在来填上:

#!/usr/bin/env python3"""展示 == 和 is 的区别这是Python面试常考的知识点"""defcompare_demo():"""演示 == 和 is 的区别"""print("=== == vs is 对比演示 ===\n")# 案例1:整数缓存问题    a = 256    b = 256print("案例1: 整数缓存 (Python对-5到256有缓存)")print(f"  a = 256, b = 256")print(f"  a == b: {a == b}")      # True(值相等)print(f"  a is b: {a is b}")    # True(Python缓存了256)print()# 案例2:超出缓存范围    a = 257    b = 257print("案例2: 超出缓存范围 (Python不会缓存257)")print(f"  a = 257, b = 257")print(f"  a == b: {a == b}")      # True(值相等)print(f"  a is b: {a is b}")    # False(不是同一个对象!)print()# 案例3:字符串    a = "hello"    b = "hello"print("案例3: 字符串")print(f"  a = 'hello', b = 'hello'")print(f"  a == b: {a == b}")      # Trueprint(f"  a is b: {a is b}")    # True(Python也会缓存短字符串)print()# 案例4:列表    a = [123]    b = [123]print("案例4: 列表(永远不等价)")print(f"  a = [1,2,3], b = [1,2,3]")print(f"  a == b: {a == b}")      # True(值相等)print(f"  a is b: {a is b}")    # False(两个不同的列表对象)print()defidentity_vs_equality():"""理解身份vs相等性的实际应用"""print("=== 实际应用:判断是否为None ===\n")# 常见错误:用 == 判断 None    x = None    y = []print("错误写法:")print(f"  x = None, y = []")print(f"  x == None: {x == None}")  # Trueprint(f"  y == []: {y == []}")      # Trueprint("\n正确写法(用 is):")print(f"  x is None: {x isNone}")  # Trueprint(f"  y is None: {y isNone}")  # False# 列表判空的最佳实践print("\n判空的最佳实践:")print(f"  if not y:  # 正确,判断falsy")print(f"  if y == []: # 能用但不推荐")print(f"  if y is []: # 永远不要这样写!" )defmain():    compare_demo()    identity_vs_equality()if __name__ == "__main__":    main()

运行结果:

=== == vs is 对比演示 ===案例1: 整数缓存 (Python对-5到256有缓存)  a = 256, b = 256  a == b: True  a is b: True案例2: 超出缓存范围 (Python不会缓存257)  a = 257, b = 257  a == b: True  a is b: False案例3: 字符串  a = 'hello', b = 'hello'  a == b: True  a is b: True案例4: 列表(永远不等价)  a = [1,2,3], b = [1,2,3]  a == b: True  a is b: False=== 实际应用:判断是否为None ===错误写法:  x = None, y = []  x == None: True  y == []: True正确写法(用 is):  x is None: True  y is None: False判空的最佳实践:  if not y:  # 正确,判断falsy  if y == []: # 能用但不推荐  if y is []: # 永远不要这样写!

核心知识点:

# == 是判断值是否相等# is 是判断是否是同一个对象(内存地址是否相同)

is的场景只有一个:判断None

因为None在Python中是一个单例(只有唯一一个),所以x is None是判断「x是不是None这个对象」的正确方式

其他所有情况都用==


代码示例五:一个完整的业务场景

光讲知识点不过瘾,来一个真实的业务场景:用户权限判断系统

#!/usr/bin/env python3"""用户权限判断系统这是一个综合性的if判断练习,包括:- 多重条件判断- None值处理- 链式比较- 三元运算符"""from datetime import datetimefrom typing importOptionalclassUser:"""用户类"""def__init__(self, username, age, vip_level, balance, login_time):self.username = usernameself.age = ageself.vip_level = vip_levelself.balance = balanceself.login_time = login_time  # 最近登录时间defcheck_user_permissions(user: Optional[User]) -> dict:"""    检查用户权限并返回权限字典    返回:        包含各项权限的字典    """# 第一步:用户是否存在# 用 is None 判断(这是唯一该用 is 的场景)if user isNone:return {"can_login"False,"can_vip"False,"discount"1.0,"message""用户不存在"        }# 第二步:年龄是否有效(使用链式比较)# 0 < age < 150 是合理的年龄范围ifnot (0 < user.age < 150):return {"can_login"False,"can_vip"False,"discount"1.0,"message"f"年龄{user.age}无效"        }# 第三步:判断是否成年人(用三元运算符)    is_adult = "成年"if user.age >= 18else"未成年"print(f"用户{user.username}{is_adult} ({user.age}岁)")# 第四步:根据VIP等级判断权限if user.vip_level == 0:        discount = 1.0        can_vip = True        message = "普通用户"        max_withdraw = 1000elif user.vip_level <= 3:        discount = 1.0 - (user.vip_level * 0.05)  # 95~85折        can_vip = True        message = f"VIP{user.vip_level}用户"        max_withdraw = 10000 * user.vip_levelelse:  # vip_level >= 4        discount = 0.7# 7折        can_vip = False# 已经是最高级        message = "黑钻用户"        max_withdraw = 100000# 第五步:余额判断(多重比较)# 这里不能用链式比较,因为有3个条件if user.balance >= 10000:        priority = "高"elif user.balance >= 1000:        priority = "中"else:        priority = "低"return {"can_login"True,"can_vip": can_vip,"discount": discount,"message": message,"max_withdraw": max_withdraw,"priority": priority,    }defmain():"""主函数:测试权限系统"""print("=== 用户权限判断系统 ===\n")# 创建测试用户    users = [        User("张三"250500, datetime.now()),      # 普通成年用户        User("李四"1722000, datetime.now()),     # 未成年VIP        User("王五"30450000, datetime.now()),    # 黑钻用户        User("赵六"9990100, datetime.now()),     # 年龄异常        User(NoneNoneNoneNoneNone),           # 空用户    ]# 测试每个用户for user in users:print(f"\n--- 测试用户: {user} ---")        result = check_user_permissions(user)print(f"  登录权限: {'✓'if result['can_login'else'✗'}")print(f"  折扣: {result['discount']:.0%}")print(f"  说明: {result['message']}")print(f"  优先级: {result.get('priority''N/A')}")print(f"  最高提现: {result.get('max_withdraw''N/A')}")if"message"in result:print(f"  全局消息: {result['message']}")print()if __name__ == "__main__":    main()

运行结果:

=== 用户权限判断系统 ===--- 测试用户: <__main__.User object at 0x7f8c1c104c50> ---用户张三: 成年 (25岁)  登录权限: ✓  折扣: 100%  说明: 普通用户  优先级: 低  最高提现: 1000--- 测试用户: <__main__.User object at 0x7f8c1c104c90> ---用户李四: 未成年 (17岁)  登录权限: ✓  折扣: 90%  说明: VIP2用户  优先级: 中  最高提现: 20000--- 测试用户: <__main__.User object at 0x7f8c1c104cd0> ---用户王五: 成年 (30岁)  登录权限: ✓  折扣: 70%  说明: 黑钻用户  优先级: 高  最高提现: 100000--- 测试用户: <__main__.User object at 0x7f8c1c104d10> ---用户赵六: 成年 (999岁)  登录权限: ✗  折扣: 100%  说明: 年龄999无效  全局消息: 年龄999无效--- 测试用户: <__main__.User object at 0x7f8c1c105050> ---用户None: 无法创建User对象 (需要username)

代码要点总结:

# 第45行:用 is None 判断if user isNone:return {...}# 第53行:链式比较(年龄范围判断)ifnot (0 < user.age < 150):return {...}# 第59行:三元运算符(三行缩成一行)is_adult = "成年"if user.age >= 18else"未成年"# 第63-77行:elif多重判断(VIP等级)if user.vip_level == 0:    ...elif user.vip_level <= 3:    ...else:    ...# 第82-88行:多重比较不能用链式(3个分支)if user.balance >= 10000:    priority = "高"elif user.balance >= 1000:    ...else:    ...

这是一段可以直接套用到你项目里的代码


总结:今天学到了什么?

三个核心要点:

  1. 1. 别再用 is 判断值相等
  • • 判断值用 ==
  • • 只有判断 None 用 is
  1. 2. 理解Truthiness(真值性)
  • • 空值:0, "", [], {}, None 都是 falsy
  • • 判空直接用 if not x:,别写 if x == "" or x == 0:
  1. 3. 能用链式比较,但别迷信链式
  • • 0 <= x <= 100 可以用
  • • 复杂的还是拆开写:x >= 60 and x < 90

今天就可以做的事情

  1. 1. 打开你的项目,搜一下有没有 if x is 10: 这种代码
  • • 有的话,改成 if x == 10:
  1. 2. 检查你的判空逻辑
  • • 如果你还在写 if name == "" or name == None:
  • • 改成 if not name:
  1. 3. 收藏这篇文章
  • • 以后写if判断的时候,回来翻一翻对照着写

下期预告

下一期讲什么

**循环的坑**

for 和 while 怎么选

为什么你的循环跑一次就停了

为什么在循环里改列表会出问题

想看的,关注【Python小甲鱼】,下期见


*本文代码均可直接复制运行,有问题欢迎评论区留言*

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 08:11:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/489835.html
  2. 运行时间 : 1.807204s [ 吞吐率:0.55req/s ] 内存消耗:4,910.94kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5a4b1e3b97f855069fafd6cac8952ccc
  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.000662s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000580s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.044097s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004652s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000677s ]
  6. SELECT * FROM `set` [ RunTime:0.004008s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000577s ]
  8. SELECT * FROM `article` WHERE `id` = 489835 LIMIT 1 [ RunTime:0.032960s ]
  9. UPDATE `article` SET `lasttime` = 1783123899 WHERE `id` = 489835 [ RunTime:0.022214s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.031801s ]
  11. SELECT * FROM `article` WHERE `id` < 489835 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.125537s ]
  12. SELECT * FROM `article` WHERE `id` > 489835 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.065185s ]
  13. SELECT * FROM `article` WHERE `id` < 489835 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.348960s ]
  14. SELECT * FROM `article` WHERE `id` < 489835 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.996967s ]
  15. SELECT * FROM `article` WHERE `id` < 489835 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.058333s ]
1.808839s