Python 元编程-SIMD计算的更改表示法
在并行/SIMD工作中,我经常在函数Python 元编程-SIMD计算的更改表示法,python,metaprogramming,Python,Metaprogramming,在并行/SIMD工作中,我经常在函数f中用下面的语法表示计算。但是,它有点容易出错,我想用g中定义的语法编写它。有什么方法可以从f到g中的语法中获取信息吗 dta=[[0,0,0,0],[0,0,0,0]] VAR_ONE, VAR_TWO = range(2) def f(ln): dta[VAR_ONE][ln] = dta[VAR_ONE][ln] + 1 def g(): VAR_ONE = VAR_ONE + 1 for ln in range(4):
f
中用下面的语法表示计算。但是,它有点容易出错,我想用g
中定义的语法编写它。有什么方法可以从f
到g
中的语法中获取信息吗
dta=[[0,0,0,0],[0,0,0,0]]
VAR_ONE, VAR_TWO = range(2)
def f(ln):
dta[VAR_ONE][ln] = dta[VAR_ONE][ln] + 1
def g():
VAR_ONE = VAR_ONE + 1
for ln in range(4):
f(ln)
我不知道你在找什么,但我猜。你可以创建一个类,它的属性允许你想要的东西(我想) 我的意思是:
class Class:
_VAR_ONE, _VAR_TWO = range(2)
def __init__(self, dta, ln):
self.dta = dta
self.ln = ln
def _getter(self):
return self.dta[self._VAR_ONE][self.ln]
def _setter(self, value):
self.dta[self._VAR_ONE][self.ln] = value
VAR_ONE = property(_getter, _setter)
def g(self):
self.VAR_ONE = self.VAR_ONE + 1
dta = [[0,0,0,0], [0,0,0,0]]
for ln in range(4):
inst = Class(dta, ln)
inst.g()
print(dta) # -> [[1, 1, 1, 1], [0, 0, 0, 0]]