浅谈python函数之作用域(python3.5)

yizhihongxing

浅谈Python函数之作用域

在 Python 中,作用域关系到变量的可见范围。Python 中分为全局作用域和局部作用域。

全局作用域

全局作用域中的变量可以在函数内部引用。如果有重名的变量,则优先使用局部变量。

示例代码:

a = 1  # 全局变量


def foo():
    print("函数内部 a 的值为:", a)  # 可以引用全局变量 a

    b = 2  # 局部变量

    print("函数内部 b 的值为:", b)  # 可以引用局部变量 b


foo()
print("函数外部 a 的值为:", a)  # 可以引用全局变量 a

输出结果:

函数内部 a 的值为: 1
函数内部 b 的值为: 2
函数外部 a 的值为: 1

局部作用域

局部作用域中的变量只能在定义它的函数内部引用。

示例代码:

def foo():
    x = 1  # 局部变量

    def bar():
        nonlocal x  # 使用 nonlocal 声明 x
        x += 1

    bar()
    print("函数内部 x 的值为:", x)  # 可以引用局部变量 x


foo()

输出结果:

函数内部 x 的值为: 2

在函数 bar 中,使用 nonlocal 声明变量 x,就可以在 bar 函数中对 x 进行修改。

内置作用域

在 Python 中,还有一个内置作用域,可以直接使用内置函数和变量,比如 print() 和 input() 等。

示例代码:

def foo():
    print("内置变量 True 的值为:", True)  # 可以引用内置变量 True


foo()

输出结果:

内置变量 True 的值为: True

Python 的作用域规则可以用LEGB规则表示:从L->E->G->B分别表示不同的作用域,即局部作用域(Local)、嵌套作用域(Enclosing)、全局作用域(Global)和内置作用域(Built-in)。

总结

Python 的作用域规则分为全局作用域和局部作用域,可以使用 nonlocal 关键字来在局部作用域中引用外层作用域中的变量。内置作用域可以直接使用内置变量和函数。对 Python 作用域规则的理解有助于写出更加清晰和准确的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈python函数之作用域(python3.5) - Python技术站

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

相关文章

  • 如何使用 python 2.6.x cookielib 清除 cookie

    【问题标题】:How to clear cookies using python 2.6.x cookielib如何使用 python 2.6.x cookielib 清除 cookie 【发布时间】:2023-04-05 05:33:01 【问题描述】: 我之前的描述好像不太清楚,所以重写它。 使用 python urllib2,我在我的 webapp 中…

    Python开发 2023年4月5日
    00
  • python文字转语音实现过程解析

    下面我们就来详细解析一下如何实现 Python 文字转语音的过程。 1. 安装第三方库 要实现 Python 文字转语音,我们首先需要安装一个第三方库。这个库叫做 pyttsx3。我们可以用 pip 命令来安装: pip install pyttsx3 2. 编写代码 安装完库之后,我们就可以开始编写 Python 代码了。先引入 pyttsx3 库: im…

    python 2023年6月6日
    00
  • 解决python打不开文件(文件不存在)的问题

    当在Python中打开文件时,可能会遇到文件不存在的问题。这可能是由于文件路径错误、文件名错误或文件确实不存在等原因导致的。下面是一个完整攻略,详细讲解如何解决Python打不开文件(不存在)的问题,包括检文件路径、检查文件名和两个示例说明。 1. 检查路径 在Python中,打开文件时,必须指定正确的文件路径。如果文件路径不正确,Python将无法找到文件…

    python 2023年5月14日
    00
  • python 进程的几种创建方式详解

    Python进程的几种创建方式详解 在Python中,我们可以使用多种方式来创建子进程。下面将介绍几种常用的方法,并且提供两个代码示例。 1. os模块中的fork方法 os模块中的fork方法可以用来创建一个子进程,它与父进程共享程序的代码和数据。fork方法的返回值有两种不同情况:在父进程中,fork返回新创建子进程的进程ID;在子进程中,fork返回0…

    python 2023年5月31日
    00
  • 详解Python爬取并下载《电影天堂》3千多部电影

    详解Python爬取并下载《电影天堂》3千多部电影 0. 简介 本文主要介绍如何使用Python来爬取并下载电影天堂网站上的电影资源,包括如何从首页获取分类信息和对应的电影列表,如何从电影列表页获取详细的电影信息和下载链接,并使用迅雷进行自动下载。 1. 准备工作 在进行爬取之前,需要安装一些必要的Python库和工具: BeautifulSoup4: 用于…

    python 2023年5月14日
    00
  • python处理xml文件操作详解

    Python处理XML文件操作详解 介绍 XML(可扩展标记语言)是一种在各种应用程序之间传输数据的常用格式。Python作为一门流行的编程语言,提供了处理XML文件的多种方法。在本文中,我们将介绍Python处理XML文件的详细步骤和示例代码。 步骤 1. 导入必要的库 Python解析XML文件需要使用ElementTree库。需要导入该库,我们可以使用…

    python 2023年6月3日
    00
  • 使用pyscript在网页中撰写Python程式的方法

    当然,我很乐意为您提供“使用pyscript在网页中撰写Python程式的方法”的完整攻略。以下是详细步骤和示例。 使用pyscript在网页中撰写Python程式的方法 pyscript是一种在网页中撰写Python程式的方法,它可以让用户在网页中直接编写Python代码,并且可以实时运行和试代码。以下是使用pyscript在网页中撰写Python程式的完…

    python 2023年5月13日
    00
  • 详解Python 优先队列

    Python 优先队列使用方法的完整攻略 什么是优先队列? 优先队列是一种队列,但是每次取出的元素都是队列中优先级最高的元素,而不是按照先进先出的规则取出。优先队列可以使用堆来实现,堆是一种二叉树类型的数据结构,可以方便地排序。Python中的heapq模块提供了优先队列的相关操作。 Python中如何使用优先队列 创建优先队列 使用Python中的heap…

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