Python 作业。是否可以区分值和变量?

Python assignment. Is it possible to distinguish between value and variable?

抱歉,我想不出更好的标题,命名我的 use-example 一个模糊的字典不会解释任何事情。

我想写一个模糊的字典。键将是整数元组,但检索将检索该键的值 以及相邻键的值 所以

fd = FuzzyDict()
fd[(0,0)] = {x1,x2,x3}
fd[(0,1)] = (x4,x5}
fd[(1,0)] = {x6,x7,x8}

print(f[(0,0)])
# gives {x1,x2,x3,x4,x5,x6,x7,x8}

我可以做到,只需为我的 class 编写 __setitem__() 和 __getitem__() 即可

def __getitem__(self,key):
    answer = {}
    for nbr in neighours
        answer |= self.innerdict[key+nbr]
    return answer

当我写作时乐趣就开始了

fd[(0,1)] |= {x10}
# or, equivalently
fd[(0,1)] = fd[(0,1)] + {x10}

因为赋值左边的fd[(0,1]是按变量引用赋值,右边的fd[(0,1)]是按值赋值。如果我能实现这种分离,我的代码看起来会更优雅,否则我将不得不为 fuzzy-fetch.

编写一个普通的 __getitem__() 和一个额外的函数

有没有办法在 python 中实现这种区别?

感谢所有回复的人。正如我所想,变量和值之间没有区别。 Miyagi 先生说得最好。我选择了这个代码

import collections
class BlurredDict(collections.defaultdict):

    def __init__(self,blur=(1,1)):
        self.default_factory = lambda:set()
        self.nbs = []
        for i in range(-blur[0],blur[0]+1):
            for j in range(-blur[1],blur[1]+1):
                self.nbs.append( (i,j) )

    def values(self,key):
        answer = set()
        _add = lambda a,b:tuple([x+y for x,y in zip(a,b)])
        for n in self.nbs:
            answer |= self[_add(key,n)]
        return answer

if __name__ == "__main__":
    bd = BlurredDict()
bd[(3,4)] = {34}
bd[(3,4)] |= {1000}
bd[(2,4)] = {24,0}
bd[(3,3)] = {33}
bd[(2,4)].remove(0)
print(f"{bd.values((3,4)) = }")

我的应用是模拟物理过程,其中影响随距离而减弱。此代码可以更轻松地耗尽附近的物体。