python表达式和语句的区别_在python中表达式和语句有什么区别?

在Python中,表达式和语句之间的区别是什么?

表达式只包含标识符、文本和运算符,其中运算符包括算术和布尔运算符、函数调用运算符()、订阅运算符[]等,并且可以简化为某种"值",可以是任何python对象。实例:

1

2

3

43 + 5

map(lambda x: x*x, range(10))

[a.x for a in some_iterable]

yield 7

另一方面,语句(参见1,2)是可以组成一行(或多行)Python代码的所有内容。注意,表达式也是语句。实例:

1

2

3

4

5# all the above expressions

print 42

if x: do_y()

return

a = 7

表达式是语句的一部分

@bismigalis:每个有效的python表达式都可以用作语句(称为"expression语句")。从这个意义上说,表达式就是语句。

是的,你是对的,我没有考虑这个案子。

表达式还可以包括函数调用(包括对象实例化的调用类)。从技术上讲,这些"标识符"与绑定到=语句中的值的名称完全相同…即使绑定是通过"def"或"class"关键字进行的。然而,对于这个答案,我将分别拼出函数调用来说明这一点。

@Jimdennis:我给出的示例列表包括一个函数调用(第二个示例)。我还包含了完整语法的链接,所以我想我已经讨论过了。

if condition: do_y()是一个语句,但三元运算符x if condition else y是一个表达式(条件表达式)

表达式——来自我的字典:

expression: Mathematics a collection

of symbols that jointly express a

quantity : the expression for the

circumference of a circle is 2πr.

总的来说:表达式至少产生一个值。

在python中,表达式在python语言引用中被广泛覆盖,通常,python中的表达式由原子、主元素和运算符的语法合法组合组成。

维基百科的python表达式

表达式示例:

与运算符和内置函数或用户编写函数的调用的文字和语法正确组合:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15>>> 23

23

>>> 23l

23L

>>> range(4)

[0, 1, 2, 3]

>>> 2L*bin(2)

'0b100b10'

>>> def func(a): # Statement, just part of the example...

... return a*a # Statement...

...

>>> func(3)*4

36

>>> func(5) is func(a=5)

True

维基百科的声明:

In computer programming a statement

can be thought of as the smallest

standalone element of an imperative

programming language. A program is

formed by a sequence of one or more

statements. A statement will have

internal components (e.g.,

expressions).

维基百科的python语句

总的来说:陈述可以做一些事情,通常由表达(或其他陈述)组成。

python语言参考广泛涵盖简单语句和复合语句。

但是,"语句做某事"和"表达式产生值"的区别可能变得模糊:

列表理解被认为是"表达式",但它们有循环结构,因此也可以做一些事情。

if通常是一个语句,例如if x<0: x=0,但也可以有一个条件表达式,如x=0 if x<0 else 1是表达式。在其他语言中,如c,这种形式被称为像x=x<0?0:1;这样的运算符。

您可以通过编写函数来编写自己的表达式。def func(a): return a*a是一个使用时的表达式,但在定义时由语句组成。

返回None的表达式是python中的一个过程:def proc(): pass在语法上,可以使用proc()作为表达式,但这可能是一个错误…

python比say c对表达式和语句之间的区别更严格。在C语言中,任何表达都是法律声明。你可以用func(x=2);这是表达式还是语句?(回答:用作有副作用的陈述的表达式)func(x=2)的形式在python中是非法的(或者至少它有不同的含义func(a=3)将命名参数a设置为3)

尽管这与python无关:

expression的计算结果是一个值。一个statement做了一些事情。

1

2

3

4>>> x = 1

>>> y = x + 1 # an expression

>>> print y # a statement (in 2.x)

2

但是请注意,在所有语言中,除了真正的"纯"语言,表达式也可以"做一些事情"(更正式地说:有副作用)。

@德尔南:你能举个例子吗(好奇)?我不知道。

@A:简单的例子:sys.stdout.write('see?

')(在3.x中更简单,其中print是一个函数,因此可以作为表达式的一部分调用)。当然,除非你对"做些什么"有一个非常特殊的定义。

同样,以东十一〔七〕号。实际上,大多数函数调用。

y=x+1不是表达式,而是语句。尝试eval("y=x+1"),就会出现错误。

@用户225312,你说一个statement做了点什么。那么一个空语句做什么呢?

y=x+1是表达式语句

语句表示操作或命令,例如打印语句、分配语句。

1print 'hello', x = 1

表达式是变量、操作和值的组合,生成结果值。

15 * 5 # yields 25

最后,表达式语句

1print 5*5

表达式是返回值的语句。因此,如果它可以出现在赋值的右侧,或者作为方法调用的参数,那么它就是一个表达式。

根据上下文的不同,一些代码可以同时是表达式或语句。当二者模棱两可时,语言可能有区分它们的方法。

这个问题专门问关于python的问题,所以尽管这个解释对javascript来说是广泛的,而且非常好,但对于这个问题来说,它是一个主题之外的问题。

@马丁,我会保留我的解释,但删掉我的例子,这样你每次投反对票都不会偏离主题。

甜美!如果把你以前的文章放在相关的文章里,这是值得的,这是一个彻底的解释。:)

表达式是一种东西,而语句是一种东西。表达式也是语句,但它必须有返回。

1

2>>> 2 * 2         #expression

>>> print(2 * 2)     #statement

PS:解释器总是打印出所有表达式的值。

在我看来,语句是一个带有空值的表达式

一个表达式是可以减少为一个值的东西,例如"1+3"或"foo = 1+3"。

很容易检查:

1print foo = 1+3

如果它不起作用,它就是一个声明,如果起作用,它就是一个表达式。

另一种说法可能是:

1class Foo(Bar): pass

因为它不能减少到一个值。

正如执行第一个示例所示,在python中,赋值不是一个表达式(实际上不是这样的,即允许-a = b = expr,作为一种特殊情况)。在语言中,从C中获得更多的灵感。

class Foo(bar):是一个语句的开头,不是一个完整的语句。

foo = 1+3不是一个表达式。它是一个陈述(精确地说是一个任务)。不过,1+3部分是一个表达式。

我的公式非常非常精确:"如果它不起作用,它就是一个陈述,如果它起作用,它就是一个表达。"执行它,你就会得到你的答案。

声明:

语句是执行某项操作或命令。例如:否则,循环等

1

2val a: Int = 5

If(a>5) print("Hey!") else print("Hi!")

表达式:

表达式是值、运算符和文本的组合,可以产生一些东西。

1val a: Int = 5 + 5 #yields 10

这是现有答案的副本:stackoverflow.com/questions/4728073/&hellip;。

也许是重复的,但它分享了我对上述问题的看法。无违法行为

表达:

表达式由objects和operators组合而成。

表达式具有值,该值具有类型。

简单表达式的语法:。

2.0 + 3是一个计算为5.0的表达式,它有一个与之相关联的float类型。

声明

语句由表达式组成。它可以跨越多条线。

语句包含关键字。

表达式不包含关键字。

print"hello"是语句,因为print是关键字。

"hello"是一个表达式,但列表压缩是反对的。

以下是表达式语句,如果不理解列表,则为真:

1(x*2 for x in range(10))

这很大程度上取决于你对"关键字"的定义。x = 1是一个非常好的语句,但不包含关键字。

我认为表达式包含运算符+操作数和保存操作结果的对象…例如

1var sum = a + b;

但语句只是一行代码(可能是表达式)或一块代码…例如

1

2

3

4

5

6fun printHello(name: String?): Unit {

if (name != null)

println("Hello ${name}")

else

println("Hi there!")

// `return Unit` or `return` is optional

}

python调用表达式"expression statements",因此问题可能没有完全形成。

语句包含在python中可以执行的几乎所有操作:计算值、分配值、删除变量、打印值、从函数返回、引发异常等。完整的列表如下:http://docs.python.org/reference/simplestmts.html#

表达式语句仅限于调用函数(例如,math.cos(theta)"、运算符(例如,"2+3")等,以生成值。

不,python不调用表达式"expression statements"。python调用只包含一个表达式"expression语句"的语句。

…不仅如此。

你可能感兴趣的:(python表达式和语句的区别)