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 7
là hợp lệ, yield 7
là 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:
if
thường là một câu lệnh, chẳng hạn như if x<0: x=0
như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 1
cá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*a
là 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.None
là một thủ tục trong Python: def proc(): pass
Về 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=2
bên trong lệnh gọi hàm func(x=2)
trong Python đặt đối số được đặt tên a
thành 2 chỉ trong lệnh gọi func
và 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 statement
là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+3
KHÔ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+3
là 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ì print
là 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 = 1
là một tuyên bố hoàn toàn tốt, nhưng không chứa từ khóa.
is
một từ khóa nhưng x is y
khô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:
objects
và operators
.<object><operator><object>
2.0 + 3
là một biểu thức đánh giá 5.0
và có một loại float
liê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
}