Python 在这种情况下,如何避免全局变量?

Python 在这种情况下,如何避免全局变量?,python,globals,Python,Globals,我有一个简单的代码,我希望'a'的值在最后是4。 “全球a”可以解决这个问题,但还有其他办法吗?因为到处都是globals,过度使用globals是设计拙劣的表现 a=3 def function(): a = 4 function() print(a) 如果希望a为4,则必须从函数返回它,然后将其重新分配给a a=3 def function(b): b = 4 return b a = function(a) print(a) 函数中的任何名称都是该函数的局部

我有一个简单的代码,我希望'a'的值在最后是4。 “全球a”可以解决这个问题,但还有其他办法吗?因为到处都是globals,过度使用globals是设计拙劣的表现

a=3
def function():
    a = 4

function()
print(a)

如果希望a为4,则必须从函数返回它,然后将其重新分配给a

a=3
def function(b):
    b = 4
    return b

a = function(a)
print(a)
函数中的任何名称都是该函数的局部名称,因此,您可以在函数中执行独立于代码其余部分的计算

完成后,您可以重新分配回变量进行进一步处理

所以,也许不只是把它调到4,你还可以这样做:

a=3
def function(b):
    b = b ** 4 // 5
    return b

a = function(a)
print(a)

找到一个解决方案,将变量存储在类中:

class aa:
     def __init__(self):
          self.a=3

variables = aa()

print(variables .a)  # Prints '3'

def function():
    z.a = 4

function()

print(variables .a)  # Prints '4'

编写
a=3
后,您就已经使用了全局变量。标题是“如何避免全局变量”,问题是“如何在没有
global
关键字的情况下修改函数中的全局变量”。你应该解释你要解决的问题是什么。很难说写这样的东西的“正确”方法,因为如果我们试图解决那些没有意义的事情,它会很快简化为
print(4)
。你为什么要避免使用
global
关键字?你试图解决的根本问题是什么?了解你的目标很重要
tkinter
有一个称为“Variables”(请参阅)的特殊类,可以简化您的操作并避免使用全局变量。有关更多详细信息,请参见。是否有关于downvote的解释?可能是因为此代码没有太多意义。@Gabriel在什么方面没有意义?直到您编辑它(不是downvoter)后才有意义。我知道您的程序是一个有效的Python程序,它误导了tho。无论如何,您的编辑改进了它。这是一种黑客行为,不是解决方案。您不需要定义类来完成类似的操作。请看,这一个已标记为的副本。