gpt4 book ai didi

Python:使用列表项代替全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:59 24 4
gpt4 key购买 nike

所以我一直很好奇。我对 python 太陌生了。我已经编码一年多了,但我曾提到但并不完全理解的是“全局变量不好”的污名。

也就是说,我是一个初学者,无法理解关于为什么我应该避免(或只是小心)全局变量的任何在线解释。我只是将每个人所说的一切都牢记在心,并假设全局变量只是险恶的怪物,它们会在运行时潜行我的代码并吃掉我的所有数据。

于是我开始做以下事情:

>>> SomeVar = [0]     # To avoid the 'global' keyword, I'll just make a single list item.
>>>
>>> def increment(): # Hey look, it's practically global!
>>> SomeVar[0] += 1
>>>
>>> increment()
>>> increment()
>>>
>>> SomeVar
[2]

一段时间后,我终于具备了对此事进行实际研究的知识和经验,但我开始觉得我可能没有捕获要点。我知道全局变量占用命名空间,可能会在多线程中出现问题,而且它们太多和/或太多函数同时访问它们会很难跟踪,但我仍然不了解它们,我只是想问问;

我的 list-global-aversion 变量是否真的有助于解决全局变量可能出现的任何问题,还是我完全没有捕获要点?我明白为什么它对上述问题(多线程、意大利面条代码)没有任何好处,但是……它有什么帮助吗?

提前致谢!

最佳答案

是的,您没有捕获要点。你创建的仍然是一个全局变量;您所做的只是解决关键字问题。

当这扩展到一个完整的程序时,Somevar 的初始化很可能与其使用相分离。您已经让您的函数依赖于未知位置和出处的外部变量。相反,试试这个:

def increment(var):      # Hey look, it's properly local!
return var + 1

somevar = 0
somevar = increment(somevar)
somevar = increment(somevar)

关于Python:使用列表项代替全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44031485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com