我看到这个问题,就想知道。
忽略了几乎所有语言都必须向后兼容的事实,有什么理由我们不能使用运算符作为关键字和函数,这取决于它是否紧跟括号?这会让语法更难吗?
我想的主要是python,但也像C语言。
根据语言的不同,未定义not()。如果not()未在某些语言中定义,则无法使用它。为什么不()在某些语言中没有定义?因为这种语言的创造者可能不需要这种语言结构。因为让事情变得更简单更好。
Perl做了与此非常相似的事情,结果有时令人惊讶。你会在许多Perl文本中找到关于这个的警告;例如,这个来自标准的分布式Perl留档(man perlfunc
):
print 1+2+4; # Prints 7. print(1+2) + 4; # Prints 3. print (1+2)+4; # Also prints 3! print +(1+2)+4; # Prints 7. print ((1+2)+4); # Prints 7.
一个更令人惊讶的案例,它经常咬新来者:
print
(a % 7 == 0 || a % 7 == 1) ? "good" : "bad";
将打印0或1。
简而言之,这取决于你的语法分析理论。许多人认为解析应该是精确的和可预测的,即使这会导致令人惊讶的解析(如链接问题中的Python示例,或者更著名的是,C最烦人的解析)。其他人倾向于Perl的“照我说的做”哲学,尽管结果——如上所述——有时与程序员实际的意思大不相同。
C、 C和Python都倾向于“精确和可预测”的理念,现在它们不太可能改变。
问题内容: 为什么在Python中没有and运算符? 问题答案: 不是因为它没有道理;而是因为它没有意义。最好将“ x ++”定义为“ x + = 1,求出x的先前绑定”。 如果您想知道最初的原因,则必须浏览旧的Python邮件列表,或者询问那里的某个人(例如Guido),但是在事实成立之后就很容易找到理由了: 与其他语言一样,不需要简单的增量和减量。您不会经常用Python编写东西。相反,你做类
targetPixValList是一个包含Double对象的列表,它也包含列表中连续位置的相似值,当我尝试使用Code_1比较两个Double值时,cnt返回零。当我使用code_2时,cnt返回值。 列表的类型是 为什么“==”运算符不能与Double一起使用? 代码_1: Code_2:
根据我的理解,Flink中的运算符有源运算符、转换运算符等。我对Flink中运算符的理解正确吗? 在运算符状态下,Flink是维护每个运算符的状态(如针对每个作业/任务的map(),reduce()等),还是维护一个完成的作业/任务的状态?还有,如果我的作业是以多个并行提交的,那么每个槽会有自己的状态吗?
问题内容: 我不明白为什么Python没有功能。它有一个内置的(我认为是姐姐),但没有。 在python 2.6中甚至有一个函数(在math中),但是没有符号。当您可以只写一个然后直接从中获取时,为什么还要写一个?后者会更清楚:x带有y的符号,而带copysign的则必须记住它是x带有y的符号还是y带有x的符号! 显然,除了,它不提供任何其他功能,但是它也将更具可读性(对于像python这样的高度
代码 产出(如预期) 1.post increment运算符()在表中具有最高的优先级。因此它肯定会在赋值运算符()之前执行。根据post增量规则,变量的值只有在执行该语句之后才会增加。 参见有rvalue 3,而不是变量本身,对吗?但是如果它带来了一个具有lvalue的变量,那么5将插入其中,在语句结束后,它的值将是6。这有什么问题,为什么做不到?
问题内容: 考虑以下代码: 为什么会这样呢? 为确保以上内容正确无误,我刚刚在Windows上的Python 2.5.4、2.6.5、2.7b2,Python 3.1和Linux上的Python 2.7b1上进行了测试。 看起来所有这些对象之间都具有一致性,所以这是设计使然。我想念什么吗? 我只是从我的一些个人域过滤脚本中发现失败了。 问题答案: 验证对象的身份,和Python,任何执行时,它符合