我正在尝试执行以下句子:
¬ = lambda x: not x
但我收到了以下错误:
File "<stdin>", line 1
¬ = lambda x: not x
^
SyntaxError: invalid character in identifier
好的,我知道这是Python中的无效句子,但我正在寻找一种允许我使用这种语法的解决方案。
我的目标是创建一个脚本来轻松运行命题逻辑,如果我能做到,我就可以用糖语法做一些事情,如下所示:
¬ False
>>>True
答案 0 :(得分:3)
没有重写解析器(这不是一个好主意),这在Python中是不可能的。变量名称只能包含字母,数字和/或下划线。此外,第一个字符必须是字母或下划线。此外,变量名称不能与if
或class
等关键字相同。
除此之外,名称中不能有其他字符。您同样不能创建自己的关键字或运算符符号(尽管您可以使自定义类上的大多数现有运算符超载以执行您想要的任何操作。以下是参考:operator overloading in python)。
有关详细信息,请参阅Python's grammar specification的链接以及在Python中定义identifiers and keywords的链接。
另外,只是为了记录,您可以使用operator.not_
而不是自己的功能来反转布尔值。
答案 1 :(得分:0)
非常感谢你的帮助,@ iCodez已经完美地回答了python上下文,但是真的我开放使用其他可以做到的语言,我发现它在Ruby上,在ruby代码下运行我的想:
#!/usr/local/bin/ruby
# coding: utf-8
σ = 9
def √(x)
x**0.5
end
def ¬(x)
not x
end
puts σ
puts √ σ
puts ¬ false
和输出:
9
3.0
true
再次感谢您的帮助!还要感谢帮助我找到其他语言的programmers thread。