假设我有一个名为“ x”的变量和一个值为“ x”的字符串(string1 =“ x”)。如何通过字符串处理变量? 例如更改变量的值或如果它是对象则调用方法? 预先感谢
答案 0 :(得分:1)
变量可通过字典locals()
和globals()
获得。如果您想通过弹簧名称访问特定变量,可以执行例如
>>> my_var = 'hello'
>>> x = 'my_var'
>>> locals()[x]
'hello'
您还可以使用这种方法将其分配回变量,例如
>>> my_var = 'hello'
>>> x = 'my_var'
>>> locals()[x] = 'something else'
>>> my_var
'something else'
由于函数是Python中的对象,因此您可以以相同的方式访问任何本地可用的函数来调用它们。
>>> def my_test_function(n):
>>> return n*8
访问该方法并调用它。
>>> locals()['my_test_function'](4)
32
要通过对象名称访问对象的属性,可以使用getattr()
和setattr()
进行设置。例如,创建一个具有单个属性your_prop
的对象。
class Example:
your_prop = 2
a = Example()
可通过your_prop
获得该值。
>>> a.your_prop
2
可以使用getattr
通过名称访问属性
>>> getattr(a, 'your_prop')
2
可以使用setattr
设置属性:
>>> setattr(a, 'your_prop', 5)
>>> a.your_prop
5
答案 1 :(得分:0)
好吧,假设您有许多不同的功能:Aoo()
,Boo()
,Coo()
...,并假设您要指定要通过命令调用的函数行参数。
现在,该参数将是一个字符串,因此您需要通过函数名称来调用它,但是您事先并不知道函数的名称。
一种可能的解决方案是使用exec()
:
def boo():
print("boo function")
def coo():
print("coo function")
现在:
argument = "boo"
exec(argument + "()")
>>> boo function
和
argument = "coo"
exec(argument + "()")
>>> coo function
答案 2 :(得分:0)
这取决于您要执行的操作,但是您可以使用x
或locals()
来获取globals()
指向的内容:
def x(k):
return k + 1
string1 = "x"
the_function_x = locals()[string1]
print(the_function_x(3))
输出4
(通过使用x
称为string1
函数)。