Câu trả lời:
Expressions chỉ chứa định danh , chữ và các nhà khai thác , nơi các nhà khai thác bao gồm toán tử số học và boolean, chức năng điều hành cuộc gọi () các nhà khai thác thuê bao [] và tương tự, và có thể được giảm xuống còn một số loại "giá trị", mà có thể là bất kỳ đối tượng Python. Ví dụ:
3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7
Tuyên bố (xem 1 ,2 ), mặt khác, là tất cả mọi thứ có thể tạo thành một dòng (hoặc một vài dòng) mã Python. Lưu ý rằng các biểu thức là báo cáo là tốt. Ví dụ:
# all the above expressions
print 42
if x: do_y()
return
a = 7
print("Hello world!")hoặc my_list.append(42).
a = yield 7là hợp lệ, yield 7là một biểu thức. Một thời gian dài trước đây, yieldđã được giới thiệu như một tuyên bố, nhưng nó đã được khái quát thành một biểu thức trong PEP 342 .
Biểu hiện - từ Từ điển Oxford Mỹ mới :
biểu thức: Toán học một tập hợp các ký hiệu cùng biểu thị một đại lượng: biểu thức cho chu vi của một vòng tròn là 2πr.
Trong tổng điều khoản chung: Biểu thức tạo ra ít nhất một giá trị.
Trong Python, biểu thức được bao phủ rộng rãi trong Python Language Reference Nói chung, biểu hiện bằng Python được tạo thành từ sự kết hợp cú pháp hợp pháp của nguyên tử , cử sơ bộ và nhà khai thác .
Ví dụ về biểu thức:
Nghĩa đen và kết hợp chính xác về mặt cú pháp với Toán tử và các hàm dựng sẵn hoặc lệnh gọi của các hàm do người dùng viết:
>>> 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
Tuyên bố từ Wikipedia:
Trong lập trình máy tính, một câu lệnh có thể được coi là phần tử độc lập nhỏ nhất của ngôn ngữ lập trình mệnh lệnh. Một chương trình được hình thành bởi một chuỗi gồm một hoặc nhiều câu lệnh. Một câu lệnh sẽ có các thành phần bên trong (ví dụ: biểu thức).
Nói một cách tổng quát: Các câu lệnh Làm gì đó và thường bao gồm các biểu thức (hoặc các câu khác)
Tài liệu tham khảo ngôn ngữ Python bao gồm các câu lệnh đơn giản và câu lệnh ghép .
Sự khác biệt của "Tuyên bố làm một cái gì đó" và "biểu thức tạo ra một giá trị" tuy nhiên có thể trở nên mờ nhạt:
ifthường là một câu lệnh, chẳng hạn như if x<0: x=0nhưng bạn cũng có thể có một biểu thức điều kiện giống như x=0 if x<0 else 1các biểu thức. Trong các ngôn ngữ khác, như C, hình thức này được gọi là toán tử như thế nàyx=x<0?0:1; def func(a): return a*alà một biểu thức khi được sử dụng nhưng được tạo thành từ các câu lệnh khi được định nghĩa.Nonelà một thủ tục trong Python: def proc(): passVề mặt cú pháp, bạn có thể sử dụng proc()như một biểu thức, nhưng đó có thể là một lỗi ...func(x=2);Đó là một biểu thức hoặc tuyên bố? ( Trả lời: Biểu thức được sử dụng như một Tuyên bố có tác dụng phụ. ) Câu lệnh gán x=2bên trong lệnh gọi hàm func(x=2)trong Python đặt đối số được đặt tên athành 2 chỉ trong lệnh gọi funcvà bị giới hạn hơn so với ví dụ C.Mặc dù điều này không liên quan đến Python:
Một expressionđánh giá cho một giá trị. A statementlàm một cái gì đó.
>>> x + 2 # an expression
>>> x = 1 # a statement
>>> y = x + 1 # a statement
>>> print y # a statement (in 2.x)
2
somelist.append(123). Hầu hết các cuộc gọi chức năng, thực sự.
Các câu lệnh thể hiện một hành động hoặc lệnh, ví dụ như các câu lệnh in, câu lệnh gán.
print 'hello', x = 1
Biểu thức là sự kết hợp của các biến, hoạt động và giá trị mang lại giá trị kết quả.
5 * 5 # yields 25
Cuối cùng, tuyên bố biểu thức
print 5*5
Một biểu thức là một cái gì đó có thể được giảm đến một giá trị, ví dụ "1+3"hoặc "foo = 1+3".
Thật dễ dàng để kiểm tra:
print foo = 1+3
Nếu nó không hoạt động, đó là một tuyên bố, nếu có, đó là một biểu thức.
Một tuyên bố khác có thể là:
class Foo(Bar): pass
vì nó không thể được giảm đến một giá trị.
a = b = exprđược cho phép, như một trường hợp đặc biệt) trong Python. Trong các ngôn ngữ lấy thêm cảm hứng từ C, nó là.
class Foo(bar):là sự khởi đầu của một tuyên bố, không phải là một tuyên bố hoàn chỉnh.
foo = 1+3KHÔNG phải là một biểu thức. Đó là một tuyên bố (một nhiệm vụ phải chính xác). Một phần 1+3là một biểu thức mặc dù.
Một biểu thức là một cái gì đó, trong khi một tuyên bố làm một cái gì đó.
Một biểu thức là một tuyên bố là tốt, nhưng nó phải có một sự trở lại.
>>> 2 * 2 #expression
>>> print(2 * 2) #statement
PS: Trình thông dịch luôn in ra các giá trị của tất cả các biểu thức.
TUYÊN BỐ:
Tuyên bố là một hành động hoặc một lệnh làm một cái gì đó. Vd: If-Else, Loops..vv
val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")
BIỂU HIỆN:
Biểu thức là sự kết hợp của các giá trị, toán tử và nghĩa đen mang lại một cái gì đó.
val a: Int = 5 + 5 #yields 10
Một tuyên bố có chứa một từ khóa.
Một biểu thức không chứa từ khóa.
print "hello"là tuyên bố, bởi vì printlà một từ khóa.
"hello" là một biểu thức, nhưng nén danh sách là chống lại điều này.
Sau đây là một tuyên bố biểu thức và nó là đúng mà không cần hiểu danh sách:
(x*2 for x in range(10))
x = 1là một tuyên bố hoàn toàn tốt, nhưng không chứa từ khóa.
ismột từ khóa nhưng x is ykhông nhất thiết là một tuyên bố (nói chung nó chỉ là một biểu thức).
Biểu thức:
objectsvà operators.<object><operator><object>2.0 + 3là một biểu thức đánh giá 5.0và có một loại floatliên quan đến nó.
Các câu lệnh
Báo cáo bao gồm các biểu thức. Nó có thể trải dài trên nhiều dòng.
Có một số câu lệnh có thể thay đổi trạng thái của chương trình Python của chúng tôi: tạo hoặc cập nhật biến, xác định hàm, v.v.
Và các biểu thức chỉ trả về một số giá trị không thể thay đổi trạng thái toàn cục hoặc trạng thái cục bộ trong một hàm.
Nhưng bây giờ chúng ta đã có :=, đó là một người ngoài hành tinh!
Python gọi biểu thức là "câu lệnh biểu thức", vì vậy câu hỏi có lẽ chưa được hình thành đầy đủ.
Một câu lệnh bao gồm khá nhiều thứ bạn có thể làm trong Python: tính toán một giá trị, gán một giá trị, xóa một biến, in một giá trị, trả về từ một hàm, đưa ra một ngoại lệ, v.v. Danh sách đầy đủ có ở đây: http: // docs.python.org/reference/simple_stmts.html#
Một câu lệnh biểu thức được giới hạn trong các hàm gọi (ví dụ: math.cos (theta) "), toán tử (ví dụ:" 2 + 3 "), v.v. để tạo ra một giá trị.
Tôi nghĩ rằng một biểu thức chứa toán tử + toán hạng và đối tượng chứa kết quả của hoạt động ... ví dụ:
var sum = a + b;
nhưng một câu lệnh chỉ đơn giản là một dòng mã (nó có thể là một biểu thức) hoặc khối mã ... ví dụ
fun printHello(name: String?): Unit {
if (name != null)
println("Hello ${name}")
else
println("Hi there!")
// `return Unit` or `return` is optional
}