Python (ngôn ngữ lập trình)
Cú pháp > Biểu thức

Một số biểu thức trong Python tương tự như những biểu thức trong những ngôn ngữ khác chẳng hạn như C và Java, trong khi số khác thì không:
Phép cộng, trừ và nhân thì đều giống nhau, nhưng hành vi của phép chia thì khác nhau. Có hai loại phép chia trong Python: phép chia phần nguyên (phép chia số nguyên) dùng dấu //  và phép chia dấu phẩy động dùng dấu /. Python cũng sử dụng toán tử ** cho phép luỹ thừa.
Từ Python 3.5, toán tử trung tố @ mới đã được giới thiệu. Nó được thiết kể để được sử dụng trong các thư viện như NumPy để nhân ma trận.
Từ Python 3.8, cú pháp :=, hay "toán tử moóc" đã được giới thiệu. Nó gán giá trị vào biến trong một phần của một biểu thức lớn hơn.
Trong Python, == so sánh theo giá trị, khác với Java, vốn so sánh các số theo giá trị và các đối tượng theo tham chiếu. (So sánh giá trị trong Java có thể được thực hiện bằng phương thức equals().) Toán tử is của Python có thể được dùng để so sánh danh tính của đối tượng (so sánh theo tham chiếu). Trong Python, các phép so sánh có thể được xâu chuỗi lại với nhau, ví dụ như a <= b <= c.
Python sử dụng các từ khoá and, or, not để so sánh luận lý (boolean) thay vì dùng các loại biểu tượng &&, ||, ! được dùng trong Java và C.
Python có một loại biểu thức được gọi là thông hiểu danh sách (list comprehension) cũng như một loại biểu thức chung được gọi là biểu thức bộ sinh (generator expression).
Các hàm vô danh được triển khai thông qua các biểu thức lambda; tuy nhiên, phần thân của hàm vô danh chỉ có thể là đúng một biểu thức.
Biểu thức điều kiện trong Python được viết dưới dạng x if c else y (có sự khác biệt về trật tự của các toán hạng so với toán tử c ? x : y thường có trong những ngôn ngữ khác).
Có sự phân biệt giữa danh sách và bộ trong Python. Danh sách được viết dưới dạng [1, 2, 3], biển đổi được, và không thể được dùng như khoá cho từ điển (các khoá từ điển phải là bất biến trong Python). Bộ được viết dưới dạng (1, 2, 3), không biến đổi được nên có thể được dùng làm khoá của từ điển, với điều kiện là tất cả các phần tử trong bộ cũng phải là bất biến. Toán tử + có thể được sử dụng để nối liền hai bộ lại với nhau, nhưng không trực tiếp thay đổi nội dung của chúng, mà sẽ tạo ra một bộ mới chứa các phần tử của cả hai bộ ban đầu. Vì vậy, cho một biến t ban đầu bằng (1, 2, 3), chạy lệnh t = t + (4, 5) sẽ thực thì t + (4, 5) đầu tiên, tạo ra (1, 2, 3, 4, 5), rồi mới được gán lại cho t, bằng cách đó đã "chỉnh sửa nội dung" của t một cách hiệu quả, trong khi vẫn tuân theo bản chất bất biến của đối tượng bộ. Trong các ngữ cảnh không mơ hồ thì dấu ngoặc đơn là không cần thiết.
Python có một tính năng là tháo tách chuỗi (sequence unpacking) trong đó các biểu thức, mà mỗi biểu thức được đánh giá thành bất kì thứ gì có thể được gán vào (một biến, một thuộc tính viết được...), được liên kết theo cùng một cách với các bộ ban đầu đó và được đặt vào vế bên trái dấu bằng trong một câu lệnh gán. Câu lệnh này mong đợi một một đối tượng lặp được (iterable) ở vế bên phải dấu bằng tạo ra cùng một số lượng giá trị giống như ở các biểu thức trước đó khi đã và sẽ lặp qua, rồi gán mỗi giá trị được tạo ra bằng các biểu thức tương ứng ở vế bến trái.
Python có một toán tử "định dạng xâu" là %. Chức năng này tương tự như định dạng xâu printf trong C, thí dụ như "spam=%s eggs=%d" % ("blah", 2) được đánh giá thành "spam=blah eggs=2". Trong Python 3 và 2.6+, chức năng này được bổ sung bằng phương thức format() của lớp str, ví dụ như "spam={0} eggs={1}".format("blah", 2). Python 3.6 đã bổ sung thêm "f-string": blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'.
Các xâu trong Python có thể được ghép móc với nhau bằng cách "cộng" chúng lại (dùng cùng toán tử với phép cộng số nguyên và số phẩy động). Thí dụ, "spam" + "eggs" cho ra "spameggs". Kể cả nếu xấu chứa số, chúng vẫn sẽ được ghép móc thành xâu thay vì số nguyên. Thí dụ, "2" + "2" cho ra"22".
Python có nhiều kiểu hằng xâu khác nhau:
Xâu được phân cách bởi dấu nháy đơn hoặc nháy kép. Khác với hệ vỏ Unix, Perl và các ngôn ngữ ảnh hưởng từ Perl, dấu nháy đơn và dấu nháy kép có cùng chức năng. Cả hai loại xâu đều dùng dấu chéo ngược (\) làm ký tự thoát (escape character). Nội suy xâu đã được thêm vào kể từ Python 3.6 với tên gọi "hằng xâu được định dạng".
Xâu ba dấu nháy: bắt đầu và kết thúc bằng ba dấu nháy đơn hoặc kép. Chúng có thể trải dài trên nhiều dòng giống như trong tài liệu đây (here document) trong các hệ vỏ, Perl và Ruby.
Các loại xâu thô, được kí hiệu bằng cách đặt trước hằng xâu một kí tự r. Các chuỗi thoát sẽ không bị thông dịch; cho nên xâu thô khá là hữu ích khi xâu có chứa nhiều dấu chéo ngược, chẳng hạn như biểu thức chính quy và đường dẫn tệp trên Windows.
Python có các biểu thức chỉ số mảng và cắt lát mảng đối với danh sách, được kí hiệu là a[khoá], a[đầu:cuối] hay a[đầu:cuối:bước]. Các chỉ số được đánh từ số không, và chỉ số âm sẽ chỉ lùi từ cuối lên. Việc cắt lát sẽ lấy các phần tử từ đầu cho đến chỉ số cuối (không kể chỉ số cuối). Tham số cắt lát thứ ba, được gọi là bước, cho phép các phần tử có thể được bỏ qua hoặc đảo chiều. Chỉ số lát có thể được bỏ trống, ví dụ a[:]trả lại một bản sao của danh sách đó. Mỗi phần tử trong một lát là một bản sao nông.
Trong Python các biểu thức và câu lệnh được phân biệt một cách vững chắc, ngược lại với các ngôn ngữ như Common Lisp, Scheme, hay Ruby. Điều này đã dẫn tới nhiều biểu thức và câu lệnh có cùng chức năng. Thí dụ:
Thông hiểu danh sách và vòng lặp for
Biểu thức điều kiện và khối lệnh if
Hàm eval() (đánh giá các biểu thức) và exec() (thực thi các câu lệnh); trong Python 2, exec là một câu lệnh.
Câu lệnh không thể nằm trong biểu thức, vậy nên các loại thông hiểu (gồm cả danh sách) và biểu thức lambda, vốn là các biểu thức, không thể chứa các câu lệnh. Một trường hợp cụ thể là một câu lệnh gán chẳng hạn như a = 1 không thể là một phần của biểu thức điều kiện của một câu lệnh điều kiện. Điều này sẽ giúp tránh được các lỗi viết sai toán tử bằng ==  bằng toán tử gán =  trong câu điều kiện thường thấy ở C. Ví dụ, if (c = 1) { ... <nowiki>}</nowiki> là một đoạn mã C hợp lệ (nhưng chắc là không đúng ý) còn if c = 1: ... sẽ báo lỗi cú pháp trong Python.