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 的设计不是最好的,但应该可以。
为什么 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 的设计不是最好的,但应该可以。