Làm cách nào để bạn thực hiện thao tác gia tăng Python?
Nhưng, như chúng ta sẽ thấy trong bài viết này, điều này không hoàn toàn giống nhau. Hãy xem cách chúng ta có thể thử sử dụng chức năng tương tự của phép toán Increment [
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax9] trong Python
Gia tăng Python
Trước khi tìm hiểu sự khác biệt chính xác, chúng ta sẽ xem xét cách chúng ta có thể tăng một biến trong Python
Đoạn mã dưới đây cho thấy hầu hết tất cả các lập trình viên đều tăng số nguyên hoặc các biến tương tự trong Python
>>> a = 10 >>> print[a] 10 >>> a += 1 >>> print[a] 11 >>> a += 100 >>> print[a] 111 >>> b = 'Hello' >>> b += 1 Traceback [most recent call last]: File "", line 1, in TypeError: can only concatenate str [not "int"] to str >>> b += ' from AskPython' >>> b 'Hello from AskPython'
Chúng tôi đã tăng biến số nguyên
a += 1 a -= 10 theo các bước liên tiếp tại đây. Ngoài ra, vì toán tử
a += 1 a -= 11 cũng là viết tắt của phép nối đối với Chuỗi, nên chúng ta cũng có thể nối vào chuỗi tại chỗ
Chúng ta có thể tăng sau
a += 1 a -= 10 lên 1, sử dụng
a += 1 a -= 13 không?
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax
Chà, có một vấn đề ở đây. Python, theo thiết kế, không cho phép sử dụng “toán tử”
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax9. Thuật ngữ
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax9, được gọi là toán tử gia số trong C++/Java, không có chỗ trong Python
Tại sao không có toán tử ++ trong Python?
Nếu bạn muốn hiểu điều này chi tiết hơn, bạn cần có kiến thức cơ bản về thiết kế ngôn ngữ lập trình
Tùy chọn không bao gồm toán tử
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax9 trong Python là một quyết định thiết kế. Những người chịu trách nhiệm tạo các tính năng trong ngôn ngữ Python cảm thấy rằng không cần phải giới thiệu toán tử gia tăng kiểu CPP
Khi trình thông dịch Python phân tích ký hiệu
a += 1 a -= 13 từ đầu vào của chúng ta, nó sẽ được diễn giải theo cách sau
- Vì toán tử nhị phân
a += 1 a -= 1
1 là toán tử cộng, nêna += 1 a -= 1
3 sẽ được coi làa += 1 a -= 1
0,a += 1 a -= 1
1 vàa += 1 a -= 1
1. Nhưng Python mong đợi một số sau toán tửa += 1 a -= 1
1 đầu tiên. Do đó, nó sẽ báo lỗi cú pháp trêna += 1 a -= 1
3, vìa += 1 a -= 1
1 thứ hai không phải là số
Tương tự, phần tăng trước
a += 1 a -= 12, sẽ được xử lý như thế này
- Toán tử
a += 1 a -= 1
1 đơn nguyên trong Python đề cập đến toán tử nhận dạng. Điều này chỉ đơn giản là trả về số nguyên sau nó. Đây là lý do tại sao nó là một hoạt động nhận dạng trên số nguyên - Ví dụ: giá trị của
a += 1 a -= 1
4 chỉ đơn giản làa += 1 a -= 1
5 và đối vớia += 1 a -= 1
6, nó làa += 1 a -= 1
7. Đây là một toán tử đơn nguyên, hoạt động trên các số thực a += 1 a -= 1
2 sẽ được phân tích cú pháp thành + vàa += 1 a -= 1
9, nhưnga += 1 a -= 1
9 thứ hai lại được coi là>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax
01, đơn giản làa += 1 a -= 1
0- Do đó,
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax
03 chỉ đơn giản là đánh giá thànha += 1 a -= 1
0
Vì vậy, mặc dù chúng tôi muốn tăng giá trị của
a += 1 a -= 10 lên một, chúng tôi không thể đạt được điều này bằng cách sử dụng các ký hiệu
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax9, vì loại toán tử này không tồn tại
Do đó, chúng ta phải sử dụng toán tử
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax07 để thực hiện loại tăng này
a += 1 a -= 1
Logic tương tự cũng đúng với hoạt động giảm dần
Thao tác += được đánh giá như thế nào?
Bạn có thể nghĩ rằng vì có ký hiệu
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax08 nên nó có thể là một câu lệnh gán
Tuy nhiên, đây không phải là câu lệnh gán thông thường. Đây được gọi là câu lệnh gán tăng cường
Trong một câu lệnh gán thông thường, phía bên tay phải được đánh giá trước, trước khi gán nó cho phía bên trái
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax0
Tuy nhiên, trong câu lệnh gán tăng cường này, phía bên trái được đánh giá trước, trước khi đánh giá phía bên phải. Điều này được thực hiện để giá trị được cập nhật có thể được ghi vào vị trí bên trái
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax6
Đây là cách duy nhất để tăng biến mà không cần sử dụng câu lệnh gán lại như
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax09. Nhưng ở đây, về tổng thể, tùy chọn nào cũng không thành vấn đề, vì trình thông dịch sẽ tối ưu hóa mã khi chạy
Phần kết luận
Trong bài viết này, chúng ta đã tìm hiểu về cách chúng ta có thể sử dụng phép toán gia số trong Python và lý do tại sao các toán tử
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax9 và
>>> a++ File "", line 1 a++ ^ SyntaxError: invalid syntax61 không được hỗ trợ