欢迎访问宙启技术站
智能推送

Pythonlocals()和globals()函数的使用方法和差异

发布时间:2023-06-26 00:09:59

Pythonlocals()和globals()函数是Python中常用的两个内置函数,用于访问当前作用域内的变量和函数。在实际编程中,理解这两个函数的使用方法和差异非常重要,下面详细介绍。

1. Python locals()函数

Python locals()函数用于返回当前作用域中定义的所有局部变量和函数。在函数内部调用locals()函数,可以返回该函数内部定义的所有局部变量和函数。在全局作用域中调用locals()函数,则会返回当前模块中定义的所有全局变量和函数。

    # 在函数内部调用locals()函数

    def my_func():

        x = 1

        y = 2

        print(locals())

    

    my_func()

    # 输出 {'x': 1, 'y': 2}

    # 在模块中调用locals()函数

    x = 3

    y = 4

    def my_func():

        print(locals())

    my_func()

    # 输出 {'x': 3, 'y': 4, 'my_func': <function my_func at 0x7f22f4>, '__doc__': None, '__annotations__': {}}

2. Python globals()函数

Python globals()函数用于返回当前模块中定义的所有全局变量和函数。在任何地方调用globals()函数都会返回相同的结果。globals()函数的使用与locals()函数类似,只是globals()函数可以访问全局作用域中的变量和函数。

    # 在函数内部调用globals()函数

    def my_func():

        x = 1

        y = 2

        print(globals())

    my_func()

    # 输出 {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'my_func': <function my_func at 0x7f27d0>}

    # 在模块中调用globals()函数

    x = 3

    y = 4

    def my_func():

        print(globals())

    my_func()

    # 输出 {'x': 3, 'y': 4, 'my_func': <function my_func at 0x7f22f4>, '__doc__': None, '__annotations__': {}}

3. Python locals()函数和globals()函数的使用差异

Python locals()函数返回当前作用域内的局部变量和函数,而globals()函数返回当前模块中的全局变量和函数。下面以函数内和全局作用域为例,来说明二者的差异。

    # 函数内部

    def my_func():

        x = 1

        y = 2

        print(locals())

        print(globals())

    

    my_func()

    # 输出 {'x': 1, 'y': 2} 和 {'my_func': <function my_func at 0x7fb0d4>, '__doc__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__package__': None}

    # 全局作用域

    x = 3

    y = 4

    print(locals())

    print(globals())

    # 输出 {} 和 {'x': 3, 'y': 4, '__doc__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__package__': None}

可以看到,在函数内部调用locals()函数可以返回该函数内部定义的所有局部变量和函数,而globals()函数则返回当前模块中的所有变量和函数。在全局作用域中,locals()函数返回的是空字典,而globals()函数返回当前模块中的所有全局变量和函数。

总结:

Python locals()函数和globals()函数都是内置函数,用于返回当前作用域内的变量和函数,其中locals()函数返回当前作用域内的局部变量和函数,而globals()函数返回当前模块中的全局变量和函数。在函数内部调用locals()函数可以返回该函数内部定义的所有局部变量和函数,而globals()函数则返回当前模块中的所有变量和函数。在全局作用域中,locals()函数返回的是空字典,而globals()函数返回当前模块中的所有全局变量和函数。