首页 > 解决方案 > Python 没有检测到语法错误

问题描述

我一直在尝试使用 sort 函数对数字数组进行排序,但我忘了写括号。

arr.sort

代替

arr.sort()

我的问题是为什么 python 不能检测到这个错误并像 Java 一样通知我?该程序一直编译良好,但因为我是按升序输入数字,所以问题不会出现。

标签: pythonsyntax-errorerror-detection

解决方案


arr.sort在语法上是有效的。这不是您想要的语法。从句法上讲,arr.sort它是一个属性访问表达式,用于计算结果为的sort属性arr;从语义上讲,whenarr是一个列表,它arr.sort评估为arr'方法的方法对象sort,所以它在运行时也很好。

它有点像 Java 中的方法引用,但由于 Python 是动态类型的并且具有方法对象,因此它不需要遍历 Java 8 必须添加的所有函数式接口和 poly 表达式以支持list::sort语法。

语法错误仅适用于完全无效的语法。


推荐阅读