Python3 命名空间和作用域

news/2024/10/18 7:56:22/

在Python中,命名空间(Namespace)是一个用于存储变量名称和其对应对象的系统。它提供了一种在程序中组织和访问变量的方式,以防止命名冲突并提供代码模块化的能力。

Python中的命名空间可以被视为一个字典,其中变量名称是键,对应的对象是值。每个命名空间都是独立的,它们在不同的作用域中起作用。

作用域(Scope)指的是在程序中访问变量的有效范围。Python中有以下几种作用域:

1. 全局作用域(Global Scope):全局作用域包含在整个程序中定义的变量和函数。这些变量和函数可以在程序的任何位置访问。

2. 局部作用域(Local Scope):局部作用域由函数或类的定义创建。它包含在函数或类内部定义的变量和函数。局部作用域中的变量在函数或类的内部可见,但对于外部作用域来说是不可见的。

3. 嵌套作用域(Enclosing Scope):嵌套作用域是指在一个函数内部定义了另一个函数,内部函数可以访问外部函数中的变量。在嵌套函数中,内部函数的作用域既包括它自己的变量,也包括外部函数中的变量。

当访问一个变量时,Python解释器首先搜索当前作用域的命名空间,如果找不到该变量,则继续搜索包含该作用域的嵌套作用域。如果变量在任何作用域中都找不到,则会引发NameError异常。

以下是一个简单的示例,演示了Python中的命名空间和作用域的概念:

```python
x = 10  # 全局作用域

def foo():
    y = 20  # 局部作用域
    print(x)  # 可以访问全局变量
    print(y)

    def bar():
        z = 30  # 嵌套作用域
        print(x)  # 可以访问全局变量
        print(y)  # 可以访问外部函数的变量
        print(z)

    bar()

foo()
```

输出结果为:

```
10
20
10
20
30
```

在上面的示例中,全局变量`x`可以在函数`foo`和`bar`中访问,局部变量`y`只能在函数`foo`中访问,而嵌套变量`z`只能在函数`bar`中访问。每个函数都有自己的命名空间,可以在其中创建和访问变量,但无法在其他函数中直接访问。


http://www.ppmy.cn/news/80297.html

相关文章

Android 系统内的守护进程 - main类服务(3) : installd

声明 只要是操作系统,不用说的就是其中肯定会运行着一些很多守护进程(daemon)来完成很多杂乱的工作。通过系统中的init.rc文件也可以看出来,其中每个service中就包含着系统后台服务进程。而这些服务被分为:core类服务(adbd/servicemanager/healthd/lmkd/logd/vold)和mai…

今日单词|长期主义 (Day 1)

aquifier n.含水层 replenishsupplement vt.补充 oxytocin n.催产素 heyday n.全盛时期 In its heyday, the company ran trains every fifteen minutes. desalination n. desalinate salination salinate salt n. Its too salty. savory. a.令人愉快的、可口的 savor all …

ISO证书“带标”与“不带标”的区别是什么?

ISO9001质量管理体系认证是企业产品获得“通行绿卡”的最直接最有效的途径。 通过认证在打破贸易壁垒,提高产品知名度,降低生产成本,提高经济效益,维护消费者权益,减少重复审核负担等方面的作用越来越为企业界所共知。…

计算机网络实验(ensp)-实验10:三层交换机实现VLAN间路由

目录 实验报告: 实验操作 1.建立网络拓扑图并开启设备 2.配置主机 1.打开PC机 配置IP地址和子网掩码 2.配置完成后点击“应用”退出 3.重复步骤1和2配置每台PC 3.配置交换机VLAN 1.点开交换机 2.输入命名:sys 从用户视图切换到系统视图…

【系统移植】uboot 通过 NFS 加载根文件系统(一) —— 网络环境配置

前面试过了SD卡烧录根文件系统,然后借助环境变量 bootargs 来加载SD卡中的根文件系统,但是实际开发需要经常对文件做增删改等操作,所以将根文件系统放在SD上不大合适。 因此,最常用的做法是把根文件系统放在NFS服务端&#xff08…

本地训练中文LLaMA模型实战教程,民间羊驼模型,24G显存盘它!

羊驼实战系列索引 博文1:本地部署中文LLaMA模型实战教程,民间羊驼模型 博文2:本地训练中文LLaMA模型实战教程,民间羊驼模型(本博客) 博文3:精调训练中文LLaMA模型实战教程,民间羊驼模型(马上发布) 简介 在学习完上篇【1本地部署中文LLaMA模型实战教程,民间羊驼模…

C++——深度优先搜索

深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索图或树的算法。它从起始节点开始,沿着一条路径尽可能深地探索,直到无法继续或达到目标节点,然后回溯到前一节点,继续探索其他路径&am…

Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

一、前言 本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒体文…