在 python 中获取和设置值

get and set value in python

我想在我的 python 代码中使用一些全局变量。 然后用set函数设置它们的值,想通过get函数得到它们的值。

例如:

a = None #global variable1

b= None #global variable2

def set(var, value):
  var = value

def get(var):
  return var

set(a, '1')
get(b, '2')

我想要一个通用的 get 和 set 函数,它可以对任何全局变量执行此操作。我怎样才能在 python 中做到这一点?这里写的代码报错。

Python 是 "call by value" 而不是 "call by reference"。这意味着当您调用 "set(a, '1')" 时,您正在将 "a" 的值传递给函数 "set"。 "set"中的变量"var"是函数本身的局部变量,不会影响你的全局变量"a"。您需要让 setter 和 getter 方法访问您的全局变量。您可以通过使它们全部成为 class 对象的一部分来做到这一点。

如果您愿意将变量名称作为字符串传递,可以使用 globals() 函数来实现。但即使你可以,我也不认为这是个好主意。

首先,您可以这样做:

def get_var(var_name):
    return globals()[var_name]

def set_var(var_name, value):
    globals()[var_name] = value

我没有使用 set 这个名字,因为它是一个内置类型,您可能不想用其他东西来掩盖它。

你可以这样称呼它:

set_var("foo", 1)

bar = get_var("foo")

print(foo, bar) # prints 1 1

所以它可以工作,但实际上不需要那些功能。您可以改用普通语法分配或获取全局变量。只需使用 foo = 1 而不是 set_var("foo", 1)(如果您在函数中执行此操作,请将 global foo 放在首位)。获取全局变量就像命名它一样简单(就像我在 print(foo) 中所做的那样)。

如果您事先不知道变量名,您可能应该将名称和值放入字典中,而不是将它们设为全局变量。变量名供程序员使用。它们不是数据!