首页 >后端开发 >Python教程 >Python 函数如何在没有'global”关键字的情况下访问全局变量?

Python 函数如何在没有'global”关键字的情况下访问全局变量?

Patricia Arquette
Patricia Arquette原创
2024-12-16 08:53:13531浏览

How Can a Python Function Access a Global Variable Without the `global` Keyword?

无需全局关键字即可访问全局变量

在 Python 中,全局变量与局部变量存储在单独的命名空间中。要访问函数内的全局变量,通常使用 global 关键字。但是,在某些情况下,无需显式声明全局变量即可被访问。

考虑以下代码:

sub = ['0', '0', '0', '0']

def getJoin():
    return '.'.join(sub)

getJoin()

在此代码中,getJoin 函数返回连接的元素子列表的,它是一个全局变量。令人惊讶的是,该函数无需使用全局关键字即可访问 sub。

为什么会发生这种情况?

动态作用域

Python 使用动态作用域,这意味着在当前作用域中搜索变量,然后在封闭的作用域中搜索变量,直到找到为止。在getJoin函数中,本地没有找到变量sub。因此,它会搜索封闭范围(即全局范围),并找到其中的子变量。

变量绑定

当访问变量时,它会被绑定到一个内存位置。在 sub 的情况下,它绑定到包含“0”列表的内存位置。当解释器遇到赋值语句 sub = ['0', '0', '0', '0'].

函数访问

当调用getJoin函数时,它会执行并且解释器会搜索它需要的变量。由于 sub 在本地未找到,因此它会在封闭范围中查找并找到已绑定的 sub 变量。然后该函数访问存储在该内存位置的数据,其中包含“0”列表。

全局关键字

当您想要修改时,全局关键字很有用或在本地上下文中创建全局变量。但是,如果全局变量已经绑定到封闭范围内的内存位置,则并不严格要求访问全局变量。

以上是Python 函数如何在没有'global”关键字的情况下访问全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn