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

浅谈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 处理文件的几种方式

    以下是关于“Python 处理文件的几种方式”的完整攻略: 一、读取文件 Python 读取文件的方式有很多种,以下是几种常见的方法: 1.1 一次性读取整个文件 使用 open() 函数打开文件并读取内容,然后用 print() 函数输出即可。 with open("test.txt", "r") as f: con…

    python 2023年5月30日
    00
  • python中lambda函数 list comprehension 和 zip函数使用指南

    Python中lambda函数、list comprehension和zip函数使用指南 在Python中,lambda函数、list comprehension和zip函数是三个非常常用的函数。本攻略将详细介绍这三个函数的使用方法,包括如何定义lambda函数、如何使用list comprehension和如何使用zip函数。 lambda函数 定义lam…

    python 2023年5月13日
    00
  • Python3基础之list列表实例解析

    在Python中,List是一种常用的数据类型,它可以用来存储多个元素。本文将深入讲解Python3基础之list列表实例解析,并提供两个示例说明。 创建List 可以使用方括号来创建List,例如: my_list = [1, 2, 3, 4, 5] 上述代码演示了如何创建一个List。 访问List中的元素 可以使用索引来访问List的元素,例如: my…

    python 2023年5月13日
    00
  • 详解Python 一窥字节码的究竟

    Python字节码是Python源代码的中间表示形式,可以在解释器中执行,Python解释器可以将Python源码转化成字节码,然后在运行时再将字节码转化成机器码执行。使用Python字节码可以得到更好的性能,尤其是在执行过程中,可以减少解释器的开销。 下面讲解Python字节码使用方法的完整攻略: 1. 生成字节码 使用Python自带的compile函数…

    python-answer 2023年3月25日
    00
  • Python切换pip安装源的方法详解

    接下来我将详细讲解“Python切换pip安装源的方法详解”的完整攻略。 Python切换pip安装源的方法详解 一、为什么需要切换pip安装源 首先,我们需要知道pip是Python的一个常用包管理工具。使用pip,我们可以方便的下载、安装和升级Python包。但由于网络环境的差异,有时使用默认的国外源下载Python包会比较慢,因此需要切换pip安装源,…

    python 2023年5月14日
    00
  • Python一行代码实现自动发邮件功能

    下面是详细讲解“Python一行代码实现自动发邮件功能”的完整攻略: 需求分析 在某些业务场景下,我们需要使用程序自动发送邮件来实现某些特定功能。因此,编写Python程序实现自动发邮件功能是一个常见的需求。 解决方案 Python自带了用于发送邮件的smtplib模块,可以使用这个模块来编写一行Python代码就能实现自动发邮件功能。 步骤分析 导入smt…

    python 2023年5月19日
    00
  • Python绘制的二项分布概率图示例

    下面是详细的“Python绘制的二项分布概率图示例”的攻略,具体包含以下步骤: 步骤1:导入必要的库 首先,需要导入必要的库。在Python中,可以使用NumPy和Matplotlib库来快速地创建二项分布概率图。 import numpy as np import matplotlib.pyplot as plt 步骤2:定义二项分布函数 在这个步骤中,需…

    python 2023年5月20日
    00
  • pyinstaller打包python3.6和PyQt5中各种错误的解决方案汇总

    我们来详细讲解如何使用pyinstaller打包Python3.6和PyQt5的过程中遇到的各种错误。 一、安装 PyInstaller 首先要安装 PyInstaller。可以使用 pip 命令进行安装: pip install pyinstaller 安装完成后,我们就可以使用 PyInstaller 了。 二、使用 PyInstaller 打包 PyQ…

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