当前位置:首页>python>Python命名空间和作用域详解

Python命名空间和作用域详解

  • 2026-07-01 14:55:59
Python命名空间和作用域详解

1. 概述

在Python编程中,命名空间(Namespace)和作用域(Scope)是两个核心概念,它们决定了变量、函数和类的可见性和生命周期。理解这两个概念对于编写清晰、可维护的Python代码至关重要。

1.1 基本概念

  • 命名空间
    :是一个映射,将名称(如变量名、函数名、类名)映射到对象(如整数、字符串、函数、类)
  • 作用域
    :是一个区域,定义了名称在程序中的可见性
  • 变量查找
    :当引用一个名称时,Python会按照一定的规则在不同的命名空间中查找该名称

2. 命名空间

2.1 命名空间的定义

命名空间是一个从名称到对象的映射,每个名称都在一个特定的命名空间中唯一存在。不同命名空间中的名称可以相同,而不会发生冲突。

# 不同命名空间中的相同名称不会冲突
deffunc():
    x =10# 函数命名空间中的x
print(f"函数中的x: {x}")

=20# 全局命名空间中的x
func()
print(f"全局中的x: {x}")

2.2 命名空间的类型

Python中有以下几种主要的命名空间类型:

2.2.1 内置命名空间(Built-in Namespace)

内置命名空间包含Python内置的名称,如print()len()int()等。它在Python解释器启动时创建,在解释器关闭时销毁。

# 访问内置命名空间中的名称
print("Hello, World!")# print是内置名称
print(len("Python"))# len是内置名称
print(int("123"))# int是内置名称

# 查看内置命名空间中的名称
import builtins
print(dir(builtins))# 列出所有内置名称

2.2.2 全局命名空间(Global Namespace)

全局命名空间包含在模块级别定义的名称。当导入一个模块时,会创建该模块的全局命名空间,直到该模块被卸载时销毁。

# 模块级别定义的名称(全局命名空间)
name ="Zhang San"# 全局变量

defgreet():
print(f"Hello, {name}!")# 访问全局变量

classPerson:
pass# 全局类

# 查看全局命名空间中的名称
print(globals())# 返回全局命名空间的字典表示

2.2.3 局部命名空间(Local Namespace)

局部命名空间包含在函数或方法内部定义的名称。当函数被调用时,会创建该函数的局部命名空间,当函数返回或抛出异常时销毁。

defcalculate(a, b):
# 函数内部定义的名称(局部命名空间)
    sum_result = a + b  # 局部变量
    product_result = a * b  # 局部变量
return sum_result, product_result

# 调用函数时创建局部命名空间
result = calculate(5,3)
print(result)

# 查看局部命名空间中的名称(只能在函数内部)
deffunc():
    x =10
    y =20
print(locals())# 返回局部命名空间的字典表示

func()

2.2.4 嵌套命名空间(Enclosing Namespace)

嵌套命名空间是指嵌套函数中外层函数的命名空间。它在内部函数定义时创建,直到内部函数被销毁时才可能销毁。

defouter():
# 外层函数的命名空间(嵌套命名空间)
    outer_var ="Hello from outer"

definner():
# 内层函数可以访问外层函数的变量
print(f"Inner function accessing: {outer_var}")

return inner

# 创建并调用内部函数
inner_func = outer()
inner_func()# 输出: Inner function accessing: Hello from outer

2.3 命名空间的生命周期

不同类型的命名空间有不同的生命周期:

命名空间类型
创建时机
销毁时机
内置命名空间
Python解释器启动时
Python解释器关闭时
全局命名空间
模块导入时
模块卸载时
局部命名空间
函数调用时
函数返回或抛出异常时
嵌套命名空间
外层函数调用时
内部函数销毁时

3. 作用域

3.1 作用域的定义

作用域是一个区域,定义了名称在程序中的可见性。Python中的作用域决定了在何处可以访问特定的名称。

3.2 作用域的类型

Python中有以下几种主要的作用域类型:

3.2.1 内置作用域(Built-in Scope)

内置作用域包含内置命名空间中的名称,这些名称在程序的任何地方都可以访问。

# 内置作用域中的名称在任何地方都可访问
print("Hello")# print在内置作用域

ifTrue:
print(len([1,2,3]))# len在内置作用域

deffunc():
print(int("42"))# int在内置作用域

func()

3.2.2 全局作用域(Global Scope)

全局作用域包含模块级别定义的名称,这些名称在模块的任何地方都可以访问,包括模块内部的函数和类。

# 全局作用域
=10# 全局变量

deffunc1():
print(f"func1中的x: {x}")# 可以访问全局变量

deffunc2():
print(f"func2中的x: {x}")# 可以访问全局变量

classMyClass:
defmethod(self):
print(f"MyClass.method中的x: {x}")# 可以访问全局变量

func1()
func2()
obj = MyClass()
obj.method()

3.2.3 局部作用域(Local Scope)

局部作用域包含函数或方法内部定义的名称,这些名称只能在该函数或方法内部访问。

deffunc():
# 局部作用域
    y =20# 局部变量
print(f"func中的y: {y}")

func()

# 尝试在函数外部访问局部变量会引发NameError
try:
print(y)
except NameError as e:
print(f"错误: {e}")

3.2.4 嵌套作用域(Enclosing Scope)

嵌套作用域是指嵌套函数中外层函数的作用域,内部函数可以访问外层函数的名称。

defouter():
# 嵌套作用域
    z =30# 外层函数的变量

definner():
print(f"inner中的z: {z}")# 可以访问外层函数的变量

return inner

inner_func = outer()
inner_func()# 可以访问外层函数的变量

# 尝试直接访问外层函数的变量会引发NameError
try:
print(z)
except NameError as e:
print(f"错误: {e}")

4. LEGB规则

Python使用LEGB规则来确定变量的查找顺序。当引用一个名称时,Python会按照以下顺序查找该名称:

  1. L
    (Local):当前函数的局部命名空间
  2. E
    (Enclosing):外层嵌套函数的命名空间
  3. G
    (Global):当前模块的全局命名空间
  4. B
    (Built-in):内置命名空间

如果在所有命名空间中都找不到该名称,则会引发NameError异常。

4.1 LEGB规则示例

# 内置作用域
deffunc():
# 局部作用域
    x =10# 局部变量
print(f"局部x: {x}")

=20# 全局变量

# 变量查找顺序:局部 → 全局 → 内置
func()# 使用局部x (10)
print(f"全局x: {x}")# 使用全局x (20)
# 嵌套函数的LEGB规则
=100# 全局变量

defouter():
    x =200# 外层函数的变量(嵌套作用域)

definner():
        x =300# 内层函数的变量(局部作用域)
print(f"inner中的x: {x}")# 查找顺序:L(300) → E(200) → G(100) → B

    inner()
print(f"outer中的x: {x}")# 查找顺序:L(200) → G(100) → B

outer()
print(f"全局中的x: {x}")# 查找顺序:G(100) → B

5. 变量的定义和修改

5.1 局部变量的定义

在函数内部定义的变量默认是局部变量,只能在函数内部访问。

deffunc():
    x =10# 局部变量
print(f"函数内部: {x}")

func()

# 尝试访问局部变量会引发NameError
try:
print(f"函数外部: {x}")
except NameError as e:
print(f"错误: {e}")

5.2 全局变量的访问

函数内部可以访问全局变量,但不能直接修改全局变量。

=20# 全局变量

deffunc():
print(f"访问全局变量x: {x}")# 可以访问全局变量

# 尝试修改全局变量会创建一个新的局部变量
    x =30# 这是一个新的局部变量,不是修改全局变量
print(f"局部变量x: {x}")

func()
print(f"全局变量x: {x}")# 全局变量x的值仍然是20

5.3 global关键字

使用global关键字可以在函数内部修改全局变量。

=20# 全局变量

deffunc():
global x  # 声明x是全局变量
print(f"访问全局变量x: {x}")# 20
    x =30# 修改全局变量
print(f"修改后的全局变量x: {x}")# 30

func()
print(f"函数外部的全局变量x: {x}")# 30

5.4 nonlocal关键字

使用nonlocal关键字可以在嵌套函数内部修改外层函数的变量。

defouter():
    x =10# 外层函数的变量

definner():
nonlocal x  # 声明x是外层函数的变量
print(f"访问外层函数变量x: {x}")# 10
        x =20# 修改外层函数的变量
print(f"修改后的外层函数变量x: {x}")# 20

    inner()
print(f"外层函数中的x: {x}")# 20

outer()

6. 闭包

6.1 闭包的定义

闭包(Closure)是一个函数,它记住了其定义环境中的变量,即使该环境已经不存在。闭包通常由嵌套函数实现,内部函数引用了外层函数的变量。

6.2 闭包的条件

一个函数要成为闭包,需要满足以下条件:

  1. 必须是一个嵌套函数
  2. 内部函数必须引用外层函数的变量
  3. 外层函数必须返回内部函数

6.3 闭包示例

defouter(x):
definner(y):
return x + y  # 引用了外层函数的变量x
return inner  # 返回内部函数

# 创建闭包
add5 = outer(5)
add10 = outer(10)

# 调用闭包
print(f"5 + 3 = {add5(3)}")# 8
print(f"10 + 7 = {add10(7)}")# 17

# 闭包仍然可以访问外层函数的变量x
print(f"add5的x值: {add5.__closure__[0].cell_contents}")# 5
print(f"add10的x值: {add10.__closure__[0].cell_contents}")# 10

6.4 闭包的应用

闭包常用于:

  • 数据隐藏
  • 工厂函数
  • 装饰器
# 数据隐藏
defmake_counter():
    count =0# 私有变量

defcounter():
nonlocal count
        count +=1
return count

return counter

# 创建计数器
counter1 = make_counter()
counter2 = make_counter()

print(counter1())# 1
print(counter1())# 2
print(counter2())# 1
print(counter1())# 3

7. 命名空间字典

Python提供了以下内置函数来访问不同的命名空间字典:

  • locals()
    :返回当前局部命名空间的字典
  • globals()
    :返回当前全局命名空间的字典
  • vars()
    :返回对象的命名空间字典(如果没有参数,等同于locals())

7.1 locals()函数

deffunc(x, y):
    z = x + y
print("局部命名空间:",locals())

func(3,5)
# 输出: 局部命名空间: {'x': 3, 'y': 5, 'z': 8}

7.2 globals()函数

=10
=20

deffunc():
    z =30
print("全局命名空间:",globals()['x'],globals()['y'])
# 注意:不要尝试通过globals()修改全局变量
# 应该使用global关键字

func()
# 输出: 全局命名空间: 10 20

7.3 vars()函数

classMyClass:
def__init__(self, x, y):
        self.= x
        self.= y

obj = MyClass(10,20)
print("对象的命名空间:",vars(obj))
# 输出: 对象的命名空间: {'x': 10, 'y': 20}

# vars()没有参数等同于locals()
deffunc(x, y):
    z = x + y
print("局部命名空间:",vars())

func(3,5)
# 输出: 局部命名空间: {'x': 3, 'y': 5, 'z': 8}

8. 常见问题

8.1 变量遮蔽(Variable Shadowing)

当内层作用域中的变量名与外层作用域中的变量名相同时,内层变量会遮蔽外层变量。

=10# 全局变量

deffunc():
    x =20# 局部变量,遮蔽了全局变量x
print(f"函数内部: {x}")# 使用局部变量x

func()
print(f"全局变量: {x}")# 全局变量x仍然是10

8.2 未定义变量

如果在当前作用域中定义变量之前就引用它,会引发UnboundLocalError异常。

=10# 全局变量

deffunc():
print(f"访问x: {x}")# 尝试在定义前访问x
    x =20# 局部变量x的定义

# 会引发UnboundLocalError
try:
    func()
except UnboundLocalError as e:
print(f"错误: {e}")

8.3 可变对象与不可变对象

当闭包引用可变对象时,可以直接修改该对象,无需使用nonlocal关键字。

defouter():
# 可变对象(列表)
    items =[]

definner(item):
        items.append(item)# 直接修改可变对象
return items

return inner

# 创建闭包
add_item = outer()
print(add_item(1))# [1]
print(add_item(2))# [1, 2]
print(add_item(3))# [1, 2, 3]

9. global和nonlocal关键字

9.1 global关键字

global关键字用于在函数内部声明一个变量是全局变量,可以修改全局变量的值。

count =0# 全局变量

defincrement():
global count  # 声明count是全局变量
    count +=1
return count

print(increment())# 1
print(increment())# 2
print(count)# 2

9.2 nonlocal关键字

nonlocal关键字用于在嵌套函数内部声明一个变量是外层函数的变量,可以修改外层函数变量的值。

defouter():
    x =10# 外层函数的变量

definner():
nonlocal x  # 声明x是外层函数的变量
        x +=5
return x

return inner

add5 = outer()
print(add5())# 15
print(add5())# 20

9.3 global和nonlocal的区别

关键字
作用
适用范围
global
声明变量是全局变量
函数内部
nonlocal
声明变量是外层函数的变量
嵌套函数内部

10. 作用域的高级用法

10.1 模块级别的__name__变量

__name__是一个特殊的变量,它在模块级别定义,用于标识模块的名称。

# 模块级别
print(f"模块名: {__name__}")# 输出: __main__(如果直接运行该模块)

# 在函数中访问__name__
deffunc():
print(f"函数中的__name__: {__name__}")

func()

10.2 类的命名空间

每个类都有自己的命名空间,类的属性和方法存储在类的命名空间中。

classMyClass:
    x =10# 类属性

defmethod(self):
        y =20# 实例方法的局部变量
print(f"方法中的y: {y}")

# 访问类的命名空间
print(f"类的命名空间: {MyClass.__dict__}")
print(f"类属性x: {MyClass.x}")

# 创建实例
obj = MyClass()
obj.method()
print(f"实例的命名空间: {obj.__dict__}")

10.3 动态添加变量

可以通过命名空间字典动态添加变量。

deffunc():
locals()['x']=10# 动态添加局部变量
print(f"动态添加的x: {x}")

func()

# 动态添加全局变量
globals()['y']=20
print(f"动态添加的y: {y}")

11. 最佳实践

11.1 变量命名

  • 使用有意义的变量名
  • 避免使用与内置函数相同的名称
  • 避免在不同作用域中使用相同的变量名

11.2 作用域的使用

  • 尽量使用局部变量,减少全局变量的使用
  • 只有在必要时才使用global关键字
  • 合理使用嵌套函数和闭包
  • 避免深层嵌套(一般不超过3层)

11.3 避免变量遮蔽

  • 不要在内层作用域中使用与外层作用域相同的变量名
  • 使用不同的前缀或后缀区分不同作用域的变量

11.4 代码组织

  • 将相关的代码组织在函数和类中
  • 使用模块组织相关的函数和类
  • 保持函数的职责单一

12. 总结

命名空间和作用域是Python编程中的核心概念,它们决定了变量、函数和类的可见性和生命周期。

12.1 关键要点

  1. 命名空间
    :是一个从名称到对象的映射,有内置、全局、局部和嵌套四种类型
  2. 作用域
    :是一个区域,定义了名称的可见性,有内置、全局、局部和嵌套四种类型
  3. LEGB规则
    :变量查找顺序为局部 → 嵌套 → 全局 → 内置
  4. global关键字
    :用于在函数内部修改全局变量
  5. nonlocal关键字
    :用于在嵌套函数内部修改外层函数的变量
  6. 闭包
    :是一个记住其定义环境的函数,通常由嵌套函数实现
  7. 命名空间字典
    :可以通过locals()、globals()和vars()函数访问

12.2 实践建议

  • 理解LEGB规则,避免变量遮蔽
  • 尽量使用局部变量,减少全局变量的使用
  • 只有在必要时才使用global和nonlocal关键字
  • 合理使用闭包和命名空间字典
  • 遵循命名规范和代码组织原则

通过掌握这些概念和最佳实践,可以编写更加清晰、可维护的Python代码,避免常见的命名和作用域问题。


发布网站:荣殿教程(zhangrongdian.com) 

作者:张荣殿

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 09:33:55 HTTP/2.0 GET : https://f.mffb.com.cn/a/497490.html
  2. 运行时间 : 0.094668s [ 吞吐率:10.56req/s ] 内存消耗:4,734.92kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b1b2336f29253d1ac573e9f04a99aa71
  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.000617s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001215s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000342s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000258s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000486s ]
  6. SELECT * FROM `set` [ RunTime:0.000194s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000568s ]
  8. SELECT * FROM `article` WHERE `id` = 497490 LIMIT 1 [ RunTime:0.000643s ]
  9. UPDATE `article` SET `lasttime` = 1783042435 WHERE `id` = 497490 [ RunTime:0.007159s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000259s ]
  11. SELECT * FROM `article` WHERE `id` < 497490 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001481s ]
  12. SELECT * FROM `article` WHERE `id` > 497490 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000978s ]
  13. SELECT * FROM `article` WHERE `id` < 497490 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001632s ]
  14. SELECT * FROM `article` WHERE `id` < 497490 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005334s ]
  15. SELECT * FROM `article` WHERE `id` < 497490 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003925s ]
0.096226s