[局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量

被调用函数中的变量是局部变量。

在所有函数之外赋值的变量是局部变量。

当一个函数被调用时,会创建一个局部作用域,函数中的所有变量都存在于局部作用域中。当函数返回时,局部作用域将被破坏,局部作用域中的局部变量将丢失。

全局范围内的代码不能使用任何局部变量。

局部范围内的代码可以访问全局变量。

函数局部范围内的代码不能使用其他局部范围内的变量。

在不同的作用域中,可以用相同的名称命名不同的变量。

以下是根据特定代码的示例。

2.1全局范围内的代码不能使用任何局部变量。

在函数中给egg赋值,然后在全局范围内调用函数

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

运行后,egg未定义。

Egg是局部变量,而中的变量egg是全局变量,全局范围内的代码不能使用局部范围内的变量。

我是这样理解的:调用子函数时,创建一个局部作用域,在局部作用域中定义一个局部变量。调用子函数时,局部作用域和局部定义的局部变量没有被破坏,所以在全局作用域中找不到局部变量egg。

2.2局部范围内的代码可以访问全局变量。

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

全局变量是在声明或赋值时创建的,直到程序终止或执行。

如果函数在egg赋值前被调用

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

这将表明变量是未定义的。

2.3不同局部范围内的变量不能互相调用。

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

2.4在不同的作用域中,不同的变量可以用相同的名字命名。

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

变量egg在两个子函数中都有定义,但打印时互不影响。

如上所述,全局变量可以在局部范围内调用,在给定的例子中,我们的子函数中只有一个打印操作。但是如果一个变量在全局范围和局部范围都定义了,会出现什么样的打印结果呢?

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

我在这里的理解是:要在局部范围内对一个变量进行操作,Python会先找出这个变量是否在当前局部范围内声明。如果是,它将优先考虑当前局部范围内的变量,如果不在当前局部范围内,它将在全局范围内寻找。

Global允许在局部范围内声明全局变量。

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

通过使用global语句在局部范围内声明了一个全局变量egg,在函数调用后该变量egg不会被销毁。

如上例所述,如果全局变量和局部变量同名,局部范围将优先于当前范围内声明的变量。

用下面的例子来进一步说明这个问题。

 [局部范围内的代码可以访问全局变量]局部范围内的代码可以访问全局变量 热门话题

错误显示如前所述,在局部范围内处理变量时,Python会先检查变量是否在局部范围内声明,然后在全局范围内寻找变量的声明。

《Python编程快速上手》


发表评论

Copyright 2002-2022 by 北京艾奇交通设施工程有限公司(琼ICP备2022001899号-3).All Rights Reserved.