因为在Python语言中,表达式被定义为"求值为单个值的值、变量和运算符的组合".
如果我们取"abc"+5这样的东西.虽然它是值、变量和运算符的组合,但它的计算结果不是单个值,它会给出错误,因为您不能将字符串与整数相加.
那么,它会被认为是为什么或为什么不是一种表达吗?
因为在Python语言中,表达式被定义为"求值为单个值的值、变量和运算符的组合".
如果我们取"abc"+5这样的东西.虽然它是值、变量和运算符的组合,但它的计算结果不是单个值,它会给出错误,因为您不能将字符串与整数相加.
那么,它会被认为是为什么或为什么不是一种表达吗?
是的,根据任何合理的定义.我将从你的定义和我将使用的定义来论证这一点.
根据你的定义,
在Python语言中,表达式被定义为"求值为单个值的值、变量和运算符的组合".
我不同意这一点,因为它几乎排除了所有东西.您的异常问题并不是该示例所特有的.a + b
可以是一个表达式,因为a
可能是其__add__
刚刚抛出的类.所以,更准确地说,我会说
表达式是Python中的一个术语,其计算结果为单个值或引发异常
这就解决了你的问题.
但我仍然不会使用这个定义.看,当我们谈论表达式时,我们通常谈论的是语法和解析,而您的定义陷入了运行库的语义中.通常,我们对"表达"的定义是归纳的.也就是说,我们从几个基本表达式开始(这不是一个完整的列表,只是一些示例):
None
是一个表达式.然后,我们通过条件句归纳地建立复合表达式.
a
和b
是任意表达式,那么a + b
也是任意表达式.f
和a1, a2, ... an
是表达式,那么f(a1, a2, ... an)
也是.a1, a2, ... an
是表达式,那么[a1, a2, ... an]
也是.这样的定义最终在很大程度上是技术性的,确切的细节可以在Python grammar辆车上公开获得.但再说一次,这是really个技术知识,除非您正在攻克Python编译器本身,否则您并不真正需要了解它.