前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文读懂 Python 全局变量和局部变量

一文读懂 Python 全局变量和局部变量

原创
作者头像
Lorin 洛林
发布2024-02-26 20:56:50
35012
代码可运行
发布2024-02-26 20:56:50
举报
文章被收录于专栏:Python 技术小屋Python 技术小屋
运行总次数:2
代码可运行

版本

  • Python 3.9

前言

  • 在 Python 编程中,全局变量和局部变量是非常重要的概念之一。全局变量是在整个程序范围内可见和可用的变量,而局部变量则是在特定作用域内可见和可用的变量。在本文中,我们将深入探讨 Python 中全局变量和局部变量的概念,并通过代码示例进行说明。

全局变量和局部变量

全局变量

  • 全局变量是在程序的最外层定义的变量,在整个程序中都可以访问。在 Python 中,我们可以通过在函数外部定义变量来创建全局变量。让我们看一个例子:
代码语言:python
代码运行次数:0
复制
def print_global_var():
    print("全局变量的值为:", global_var)


# 定义全局变量
global_var = 10
# 调用函数
print_global_var()
  • 在这个例子中,global_var 是一个全局变量,它在函数外部定义,并在函数内部被访问。运行以上代码,将会输出:
代码语言:txt
复制
全局变量的值为: 10

局部变量

  • 局部变量是在函数内部定义的变量,只能在函数内部访问。它们的作用域仅限于函数内部,出了函数就无法访问。让我们来看一个示例:
代码语言:python
代码运行次数:0
复制
def print_local_var():
    # 定义局部变量
    local_var = 20
    print("局部变量的值为:", local_var)

# 调用函数
print_local_var()
  • 在这个示例中,local_var 是一个局部变量,它在函数内部定义,并在函数内部被访问。运行以上代码,将会输出:
代码语言:txt
复制
局部变量的值为: 20

全局变量与局部变量的关系

  • 在 Python 中,如果在函数内部尝试访问一个变量,首先会在当前函数的作用域内查找该变量。如果找不到,Python 将会继续在外层作用域中查找,直到找到为止。因此,函数内部可以访问全局变量。
  • 如果在函数内部试图修改全局变量的值,Python 将会创建一个新的局部变量,而不是修改全局变量的值。这是因为 Python 认为在函数内部修改全局变量可能会导致混乱,因此默认情况下会将其视为局部变量。
代码语言:python
代码运行次数:2
复制
global_var = 10

def modify_global_var():
    global_var += 30
    print("修改后的全局变量的值为:", global_var)

# 调用函数
modify_global_var()
print("全局变量的值为:", global_var)
  • 在上面的示例中,为了避免造成混乱,Python 默认将 global_var 视为局部变量,因此会报错:UnboundLocalError: local variable 'global_var' referenced before assignment
  • 为了明确告诉 Python 我们要修改全局变量的值,我们可以使用 global 关键字。让我们看一个修改后的示例:
代码语言:python
代码运行次数:0
复制
global_var = 10

def modify_global_var():
    global global_var
    global_var += 30
    print("修改后的全局变量的值为:", global_var)

# 调用函数
modify_global_var()
print("全局变量的值为:", global_var)
  • 在这个示例中,我们使用了 global 关键字来告诉 Python 我们要修改全局变量 global_var 的值。运行以上代码,将会输出:
代码语言:txt
复制
修改后的全局变量的值为: 40
全局变量的值为: 40

总结

  • 在本文中,我们深入探讨了 Python 中的全局变量和局部变量的概念。我们了解了全局变量是在整个程序范围内可见和可用的变量,而局部变量则是在特定作用域内可见和可用的变量。我们还学习了如何在 Python 中定义和访问全局变量和局部变量,并了解了它们之间的关系。

个人简介

? 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

? 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

? 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

? 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

? 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

? 保持关注我的博客,让我们共同追求技术卓越。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 版本
  • 前言
  • 全局变量和局部变量
    • 全局变量
      • 局部变量
        • 全局变量与局部变量的关系
        • 总结
        • 个人简介
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com