0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍Python中的作用域规则以及如何在程序中使用它们

网络技术干货圈 来源:网络技术干货圈 2023-04-20 16:59 次阅读

Python 中,每个变量都有一个定义它的作用域,这是指变量在程序中可见的范围。作用域决定了在哪里可以访问变量以及在何处可以更改它。在本文中,我们将介绍 Python 中的作用域规则以及如何在程序中使用它们。

全局作用域

在 Python 中,定义在最外层的变量属于全局作用域。全局作用域包含了整个程序。如果我们定义一个变量在全局作用域内,那么它可以在程序的任何地方使用。

下面是一个例子:

x=5

defprint_x():
print(x)

print_x()#输出5

在这个例子中,变量 x 定义在程序的最外层,所以它属于全局作用域。函数 print_x() 可以访问全局变量 x 并将其打印到控制台上。

局部作用域

在 Python 中,每个函数都有自己的作用域,称为局部作用域。局部作用域只包含定义在函数内部的变量。这意味着函数外部定义的变量对于函数内部是不可见的。

下面是一个例子:

defprint_x():
x=5
print(x)

print_x()#输出5

print(x)#NameError:name'x'isnotdefined

在这个例子中,变量 x 定义在 print_x() 函数内部,所以它属于局部作用域。这意味着它只能在函数内部使用。如果我们尝试在函数外部访问变量 x,Python 将引发 NameError 异常。

嵌套作用域

在 Python 中,函数可以嵌套在其他函数中。嵌套函数可以访问其父函数的变量,这些变量属于嵌套作用域。

下面是一个例子:

defouter():
x=5

definner():
print(x)

inner()

outer()#输出5

在这个例子中,函数 inner() 嵌套在函数 outer() 中。函数 inner() 可以访问其父函数 outer() 中定义的变量 x。这是因为变量 x 属于嵌套作用域。

global 关键字

有时我们希望在函数内部修改全局变量。为了实现这一点,我们可以使用 global 关键字。

下面是一个例子:

x=5

defchange_x():
globalx
x=10

print(x)#输出5
change_x()
print(x)#输出10

在这个例子中,我们定义了一个全局变量 x,然后编写了一个函数 change_x(),它将全局变量 x 的值修改为 10。为了实现这一点,我们在函数内部使用 global 关键字来告诉 Python 我们希望修改全局变量 x 的值。

nonlocal 关键字

类似地,如果我们在一个嵌套函数中想要修改其父函数中的变量,可以使用 nonlocal 关键字。

下面是一个例子:

defouter():
x=5

definner():
nonlocalx
x=10

inner()
print(x)#输出10

outer()

在这个例子中,我们定义了一个外部函数 outer() 和一个嵌套函数 inner()。变量 x 被定义在外部函数 outer() 中。嵌套函数 inner() 使用 nonlocal 关键字来告诉 Python 我们想要修改其父函数 outer() 中的变量 x。

总结

Python 中有三种作用域:全局作用域、局部作用域和嵌套作用域。在函数内部,我们可以使用 global 和 nonlocal 关键字来访问和修改全局变量和父函数中的变量。了解作用域的概念和规则对于编写清晰、可维护的 Python 代码至关重要。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476

原文标题:网络工程师学Python-15-作用域

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    何在实际电路中使用带通滤波器

    在本教程中,我们将了解此带通滤波器、其背后的理论以及何在实际电路中使用它
    的头像 发表于 09-08 15:52 5926次阅读
    如<b class='flag-5'>何在</b>实际电路<b class='flag-5'>中使</b>用带通滤波器

    何在Linux中使用htop命令

    本文介绍何在 Linux 中使用 htop 命令。
    的头像 发表于 12-04 14:45 554次阅读
    如<b class='flag-5'>何在</b>Linux<b class='flag-5'>中使</b>用htop命令

    PCB规则以及异形板拼板教材

    PCB规则以及异形板拼板教材
    发表于 07-25 10:06

    何在Python中使用Selenium

    :Elem.send_keys用于在插入值后按Enter  · 代码行13:关闭  输出值  用户名“ guru99”的值和密码输入。  上述就是关于如何在Python中使用Selenium的全部内容
    发表于 09-08 18:17

    介绍一些与变量相关的存储属性与作用

    为大家介绍一些变量相关的存储属性、作用、生命周期以及链接属性的一些知识,有助于大家更好地理解程序,分析
    发表于 02-14 07:00

    python变量的作用

    python变量的作用1. 作用Python作用
    发表于 03-03 16:50

    何在TouchGFX中使用变量?

    不知道如何声明变量以及如何使用它们。例如,变量 A 在 model.cpp 声明。在 pw_touchgfxactive_screen.cpp ,为变量 A 输入 1。我想在
    发表于 01-10 06:23

    何在C程序中使用汇编

    怎样在C程序中使用汇编,如何在C程序中使用汇编:方法一:在每个汇编语句前加asm即可。如:void reset_data(void) { a
    发表于 09-23 23:43 55次下载

    何在Vivado Logic Analyzer中新仪表板,及使用的好处有哪些

    了解Vivado 2015.1中引入的新仪表板改进,如何在Vivado Logic Analyzer中使用它们以及使用它们的好处。
    的头像 发表于 11-26 07:07 2818次阅读

    刚柔结合PCB的优势及使用规则

    本文将讨论什么是刚柔结合 PCB,使用它们的优势,以及使用它们设计应用程序规则
    的头像 发表于 05-07 16:23 3000次阅读
    刚柔结合PCB的优势及使用<b class='flag-5'>规则</b>

    何在python代码中使用HTTP代理IP

    何在python代码中使用HTTP代理IP。
    的头像 发表于 08-04 15:46 1044次阅读

    何在python代码中使用HTTP代理IP

    如何再python代码中使用HTTP代理IP。
    的头像 发表于 09-13 09:25 775次阅读

    介绍一些流行的Python SSH库以及如何使用它们

    Python SSH是一种用于远程连接和管理Linux服务器的Python库。
    的头像 发表于 04-28 09:46 2834次阅读

    何在Python中使用MQTT

    本文主要介绍何在 Python 项目中使用 paho-mqtt 客户端库 ,实现客户端与 MQTT 服务器的连接、订阅、取消订阅、收发消息等功能。
    的头像 发表于 12-22 10:41 6460次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>Python</b><b class='flag-5'>中使</b>用MQTT

    如何使用linux下gdb来调试python程序

    中,我们将介绍何在Linux中使用GDB来调试Python程序。 一、安装GDB和Python
    的头像 发表于 01-31 10:41 475次阅读