在Python中,表达式和语句之间的区别是什么?
当前回答
声明:
语句是执行某些操作的动作或命令。例:if - else,循环…等等
val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")
表达式:
表达式是值、操作符和字面量的组合,可以产生一些东西。
val a: Int = 5 + 5 #yields 10
其他回答
表达式:
表达式由对象和运算符组合而成。 表达式有一个值,值有一个类型。 简单表达式的语法:<object><operator><object>
2.0 + 3是一个计算结果为5.0的表达式,并且有一个与之关联的类型浮点数。
语句
语句由表达式组成。它可以跨越多行。
表达式只包含标识符、文字和操作符,其中操作符包括算术运算符和布尔运算符、函数调用运算符()、订阅运算符[]等,并且可以简化为某种“值”,可以是任何Python对象。例子:
3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7
另一方面,语句(参见1,2)是可以组成一行(或几行)Python代码的所有内容。注意,表达式也是语句。例子:
# all the above expressions
print 42
if x: do_y()
return
a = 7
表达——摘自《新牛津美语词典》:
数学是一个集合 这些符号共同表达了 的表达式 圆的周长是2πr。
一般来说:表达式至少产生一个值。
在Python中,表达式在Python语言参考中有广泛的介绍。通常,Python中的表达式由原子(Atoms)、基本元素(primary)和操作符(Operators)在语法上合法的组合组成。
来自维基百科的Python表达式
表达的例子:
文字和与操作符、内置函数或用户编写的函数的语法正确组合:
>>> 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
维基百科声明:
在计算机程序设计中,语句 可以被认为是最小的 命令的独立元素 编程语言。程序是 由一个或多个序列组成的 语句。声明将包含 内部组件(例如, 表达式)。
来自维基百科的Python语句
总的来说:语句做某事,通常由表达式(或其他语句)组成。
Python语言参考涵盖了简单语句和复合语句。
“语句做某事”和“表达式产生值”的区别可能变得模糊:
List Comprehensions are considered "Expressions" but they have looping constructs and therfore also Do Something. The if is usually a statement, such as if x<0: x=0 but you can also have a conditional expression like x=0 if x<0 else 1 that are expressions. In other languages, like C, this form is called an operator like this x=x<0?0:1; You can write you own Expressions by writing a function. def func(a): return a*a is an expression when used but made up of statements when defined. An expression that returns None is a procedure in Python: def proc(): pass Syntactically, you can use proc() as an expression, but that is probably a bug... Python is a bit more strict than say C is on the differences between an Expression and Statement. In C, any expression is a legal statement. You can have func(x=2); Is that an Expression or Statement? (Answer: Expression used as a Statement with a side-effect.) The assignment statement of x=2 inside of the function call of func(x=2) in Python sets the named argument a to 2 only in the call to func and is more limited than the C example.
Python将表达式称为“表达式语句”,所以这个问题可能还没有完全形成。
一条语句包含你在Python中可以做的任何事情:计算值、赋值、删除变量、打印值、从函数返回、引发异常等等。完整的名单在这里:http://docs.python.org/reference/simple_stmts.html#
表达式语句仅限于调用函数(例如, Math.cos (theta)”)、运算符(例如“2+3”)等来生成一个值。
表达式是可以简化为值的东西,例如“1+3”是一个表达式,但“foo = 1+3”不是。
很容易检查:
print(foo = 1+3)
如果它不起作用,它就是一个语句,如果它起作用,它就是一个表达式。
另一种说法可以是:
class Foo(Bar): pass
因为它不能被简化为一个值。
推荐文章
- python中的assertEquals和assertEqual
- 如何保持Python打印不添加换行符或空格?
- 为什么Python的无穷散列中有π的数字?
- Python 3.7数据类中的类继承
- 如何在PyTorch中初始化权重?
- 计数唯一的值在一列熊猫数据框架像在Qlik?
- 使用Pandas将列转换为行
- 从matplotlib中的颜色映射中获取单个颜色
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- 我如何在Django中创建一个鼻涕虫?
- 没有名为'django.core.urlresolvers'的模块