Python内置函数locals和globals对比

Python内置函数 locals 和 globals 对比

在 Python 中,有两个内置函数 locals()globals() 用于获取当前作用域中的变量名称和变量值。

locals()

locals() 函数返回一个 Python 字典,其中包含当前作用域中的所有局部变量及其对应的值。

例如:

def foo():
    a = 1
    b = 2
    print(locals())

foo()

输出:

{'a': 1, 'b': 2}

可以看到,返回的字典中包含变量 ab 以及它们的值。

需要注意的是,locals() 函数只能在函数内部使用,它返回的字典不包含全局变量的信息。

globals()

globals() 函数返回一个 Python 字典,其中包含当前作用域中的所有全局变量及其对应的值。

例如:

a = 1
b = 2

def foo():
    print(globals())

foo()

输出:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10d7bff40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2, 'foo': <function foo at 0x10d7c35e0>}

可以看到,返回的字典中包含变量 ab 以及它们的值。

需要注意的是,当 globals() 函数在 Python 解释器的第一层(即全局作用域)调用时,返回的字典包含的信息会更多,包括解释器内置模块的名称和函数等。

对比

从上面的两个例子可以看到,locals()globals() 函数都可以用来获取当前作用域中的变量信息,但是它们的返回值是不同的。

  • locals() 函数只返回当前作用域中的局部变量,不包括全局变量。
  • globals() 函数返回当前作用域中的全局变量。

一般来说,在函数内部使用 locals() 函数,可以获得当前函数中定义的所有局部变量,而在函数外部使用 globals() 函数,则可以获得当前模块中定义的所有全局变量。

需要注意的是,为了避免命名冲突和不必要的状态泄露,应尽量避免在代码中使用 globals() 函数,除非真的有必要。

示例

以下示例展示了 locals()globals() 函数的用法:

a = 1
b = 2

def foo():
    x = 3
    y = 4
    print('Locals in foo():', locals())
    print('Globals in foo():', globals())

foo()

print('Locals in main:', locals())
print('Globals in main:', globals())

输出:

Locals in foo(): {'x': 3, 'y': 4}
Globals in foo(): {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x109ff0c10>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2, 'foo': <function foo at 0x109ff0d08>}
Locals in main: {'a': 1, 'b': 2, 'foo': <function foo at 0x109ff0d08>}
Globals in main: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x109ff0c10>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2, 'foo': <function foo at 0x109ff0d08>}

可以看到,locals() 函数在 foo() 函数中返回的字典只包含局部变量 xy,而 globals() 函数返回的字典包含全局变量 ab,以及函数 foo() 本身。在 main 函数中使用这两个函数,返回的字典分别包含了函数 foo()、全局变量 ab

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python内置函数locals和globals对比 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python魔法方法-属性转换和类的表示详解

    首先我们来了解一下什么是Python中的魔法方法。在Python中,魔法方法是以双下划线__作为前缀和后缀的特殊方法。这些方法提供了类的构造、初始化、比较、算术运算等操作的特殊行为。其中就包括本次要讲解的属性转换和类的表示。 一、属性转换 在Python中,我们经常需要对一个对象进行类型转换,比如将字符串类型转换为整数类型、将列表转换为元组类型等。而Pyth…

    python 2023年6月3日
    00
  • 详解Python IO口多路复用

    详解Python IO口多路复用 IO口多路复用指的是同时监控多个输入/输出通道的技术。它的优点通常包括高效(因为单个进程可以同时监控多个通道)以及响应灵敏(因为在单个进程中,轮询的频率可以很高)。 Python中有三种主要的IO口多路复用的实现:select、poll 和 epoll,它们都提供类似的接口(API),但不同之处在于性能和可扩展性等方面。 s…

    python 2023年5月30日
    00
  • Python中变量的输入输出实例代码详解

    Python中变量输入输出实例代码详解 本文主要介绍Python中变量的输入输出实例代码,包括Python中的标准输入输出和文件的输入输出。 标准输入输出 输入变量 要在Python中输入变量,可以使用内置函数input()。函数参数作为提示信息在屏幕上输出,用户输入变量并按Enter结束输入。 示例代码: # 输入变量并输出 name = input(&q…

    python 2023年5月31日
    00
  • 详解Python 创建WSGI应用程序

    Python创建WSGI应用程序的完整攻略包含以下步骤: 安装WSGI服务器 WSGI服务器可以是Python内置的wsgiref模块,也可以是基于C语言编写的uWSGI、Gunicorn等第三方模块。比如,安装Gunicorn可以使用以下命令: pip install gunicorn 创建WSGI应用程序 WSGI应用程序是由一个可调用的函数组成,通常命…

    python-answer 2023年3月25日
    00
  • Python中的self用法详解

    下面是“Python中的self用法详解”的完整攻略。 什么是self? 在Python中,self是指向类实例本身的一个符号,类的方法中必须有一个名为self的参数。self代表的是当前对象,它可以用来访问当前对象的属性和方法。 self的作用 self在方法中表示当前对象,它可以用来访问当前对象的属性和方法。在Python中,如果我们要在类的方法中访问对…

    python 2023年5月14日
    00
  • 利用Python自动化生成爱豆日历详解

    下面我将为你详细讲解利用Python自动化生成爱豆日历的完整攻略。 1. 准备工作 在开始之前,我们需要准备以下工具和文件: Python3:我们将使用Python3来编写代码。 中国节假日日历文件:如果需要在爱豆日历上标注节假日等特殊日期,可以使用中国节假日日历文件(例如:https://github.com/holidayjapan/chinese-ca…

    python 2023年5月19日
    00
  • Python提升Excel效率的5个方法!(实例演示)

    使用Python进行Excel自动化,可以有效地帮助我们提高工作效率和减少出错率。 本文将详细介绍使用Python操作Excel的5种提升工作效率的方法。具体有以下: 5种自动化操作Excel的方法 读取和写入Excel文件 使用Python中的第三方库(如openpyxl、xlrd、xlwt、xlutils等)可以读取和写入Excel文件。比如,我们可以读…

    2023年2月26日
    00
  • Python自定义函数计算给定日期是该年第几天的方法示例

    针对题目中要求的Python自定义函数计算给定日期是该年第几天的方法示例,下面提供一个详细的攻略: 1. 题目分析: 要求编写一个Python自定义函数,该函数可以计算给定日期是该年的第几天。具体要求如下: 函数名为 get_day_of_year(year, month, day),其中 year 为年份,month 为月份,day 为日份。 该函数返回值…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部