您现在的位置是:主页 > Web前端技术 > Web前端技术

怎么理解python全局变量,局部变量和命名空间开发技术

IDCBT2021-12-31服务器技术人已围观

简介本篇内容介绍了“怎么理解python全局变量,局部变量和命名空间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情

本篇内容介绍了“怎么理解python全局变量,局部变量和命名空间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Python 使用全局和局部变量的方式是特立独行的。虽然在许多或大多数其他编程语言中,如果未另行声明,变量将被视为全局变量,而 Python 则以相反的方式处理变量。如果没有另外声明,它们是本地的。这种方法背后的驱动原因是全局变量通常是不好的做法,应该避免。在大多数情况下,您想使用全局变量,最好使用参数将值放入函数或返回值以将其取出。与许多其他程序结构一样,Python 也通过设计强加了良好的编程习惯。

因此,当您在函数定义中定义变量时,默认情况下它们是该函数的局部变量。也就是说,您对函数体中的此类变量所做的任何操作都不会影响函数外的其他变量,即使它们具有相同的名称。换句话说,函数体是这样一个变量的范围,即这个名称与其值相关联的封闭上下文。

所有变量都有块的作用域,它们在那里被声明和定义。它们只能在声明点之后使用。

简单说一下:变量不必也不能以在 Java 或 C 等编程语言中声明的方式声明。Python 中的变量通过定义它们来隐式声明,即第一次分配值到一个变量,这个变量被声明并自动具有必须分配给它的对象的数据类型。

函数中的全局和局部变量

在下面的示例中,我们想演示如何在函数体内使用全局值:

def  f ():  
    print ( s )  
s  =  “我爱夏天的巴黎!” 
f ()

输出:

我爱夏天的巴黎!

在调用函数 f() 之前,变量 s 被定义为字符串“我爱夏天的巴黎!”。f() 的主体仅由“print(s)”语句组成。由于没有局部变量 s,即没有赋值给 s,将使用全局变量 s 的值。所以输出将是字符串“我爱夏天的巴黎!”。问题是,如果我们在函数 f() 中改变 s 的值会发生什么?它也会影响全局变量吗?我们在下面的一段代码中对此进行了测试:

def  f ():  
    s  =  "我爱伦敦!" 
    打印( s ) 
s  =  “我爱巴黎!”  
f ()
打印( s )

输出:

我爱伦敦!
我爱巴黎!

如果我们将第一个示例与第二个示例结合起来,即我们首先使用 print() 函数访问 s,希望获得全局值,然后为其分配一个新值呢?给它赋值,意味着 - 正如我们之前所说的 - 创建一个局部变量 s。因此,我们会将 s 作为同一范围内的全局变量和局部变量,即函数体。幸运的是,Python 不允许这种歧义。因此,它会引发错误,正如我们在以下示例中所见:

标签:

很赞哦! ()

本栏推荐