Python lambda 中的 isub

Python isub inside a lambda

为什么 left = lambda: cursor = cursor - 1 有效而 left = lambda: cursor -= cursor 却出现语法错误?

lambda 中的原地减法有问题吗?

编辑: 一点上下文。 我正在尝试与成员建立 class,例如:

self.instructions = {
            "0": lambda: self.tape[self.cursor] = 0   
            "1": lambda: self.tape[self.cursor] = 1
            "L": lambda: self.cursor -= 1
            "R": lambda: self.cursor += 1
            "HALT" = lambda: self.halted = True]
        }

我该如何进行这项工作?

您正在使用语法错误的 lambda 表达式。看看这个例子:

>>> decrement = lambda x: x - 1
>>> decrement(24)
23

一个 lambda 表达式是一个只有 returns 个值的函数的快捷方式:

func = lambda x: x - 1

大致相同
def func(x):
    return x - 1

您的两个示例都不起作用,因为赋值在 Python 中不像在某些其他语言(尤其是类似于 C 的语言)中那样是表达式。也就是说,cursor = cursor - 1 不能在 lambda 中,就像 cursor -= 1 一样。也不能进入 return 语句。

直接的解决方案:

def zero(self):
    self.tape[self.cursor] = 0

def one(self):
    self.tape[self.cursor] = 1

def left(self):
    self.cursor -= 1

def right(self):
    self.cursor += 1

def halt(self):
    self.halted = True

self.instructions = {
        "0": self.zero(),  
        "1": self.one(),
        "L": self.left(),
        "R": self.right(),
        "HALT": self.halt()
        }

IMO 的设计不是最好的,但应该可以。