Một tính năng mới thú vị được gọi là biểu thức gán đã được giới thiệu trong PEP572 trong Python 3. 8. Biểu thức gán sử dụng toán tử
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial9 để gán giá trị của một biểu thức cho một biến. Vì toán tử
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial9 giống với mắt và ngà của một con hải mã, nên nó được gọi một cách không chính thức là “toán tử hải mã”
Python phiên bản 3. 8 ra mắt với một tính năng mới mà một số lập trình viên Python đã mong đợi từ khá lâu. Một cách mới để gán các đối tượng cho các biến đã được giới thiệu, tôi. e. các. = toán tử. Nó cung cấp cho các lập trình viên một cách thuận tiện để gán các biến ở giữa các biểu thức. Nếu bạn nhìn vào các nhân vật với một chút trí tưởng tượng, bạn có thể thấy sự tương đồng với mắt và ngà của một con hải mã, vì vậy đây là lý do tại sao được gọi một cách trìu mến là người điều khiển hải mã
Các biểu thức gán đã được thảo luận trong PEP 572 và đây là nội dung được viết về cách đặt tên
During discussion of this PEP, the operator became informally known as "the walrus operator". The construct's formal name is "Assignment Expressions" [as per the PEP title], but they may also be referred to as "Named Expressions" [e.g. the CPython reference implementation uses that name internally].
Chúng tôi sẽ giới thiệu cách gán này trong phần này của hướng dẫn Python của chúng tôi
Một phép gán đơn giản cũng có thể được thay thế bằng một biểu thức gán, mặc dù nó có vẻ vụng về và chắc chắn không phải là trường hợp sử dụng dự định của nó
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial
ĐẦU RA
5
Hãy xem một ví dụ về Mã nhỏ chỉ sử dụng các phép gán truyền thống
txt = 'Python needs training!' ideal_length = 22 n = len[txt] if n == ideal_length: print[f'The length {n} is ideal!'] else: print[f'{n} is not ideal!']
ĐẦU RA
The length 22 is ideal!
Chúng tôi sẽ sử dụng toán tử hải mã mới trong đoạn mã Python sau
txt = 'Python needs training!' ideal_length = 22 if [n := len[txt]] == ideal_length: print[f'The length {n} is ideal!'] else: print[f'The length {n} is not ideal!']
ĐẦU RA
The length 22 is ideal!
Được rồi, bạn có thể nói điều này không ấn tượng lắm và phiên bản đầu tiên có thể được coi là dễ đọc hơn. Vì vậy, chúng ta hãy xem xét một trường hợp sử dụng hữu ích hơn
Đào tạo Python trực tiếp
Thưởng thức trang này?
Nhìn thấy. Tổng quan về các khóa học Python trực tiếp
đăng ký tại đây
Các ứng dụng hữu ích của Biểu thức chuyển nhượng
Danh sách hiểu
Trong phần sau, bạn sẽ thấy cách hiểu danh sách với toán tử hải mã
def f[x]: return x + 4 numbers = [3, 7, 2, 9, 12] odd_numbers = [result for x in numbers if [result := f[x]] % 2] odd_numbers
ĐẦU RA
________số 8
Cách thực hiện trên hiệu quả hơn cách hiểu danh sách không có biểu thức gán, vì chúng ta sẽ phải gọi hàm hai lần
def f[x]: return x + 4 numbers = [3, 7, 2, 9, 12] odd_numbers = [f[x] for x in numbers if f[x] % 2] odd_numbers
ĐẦU RA
________số 8
Biểu thức chính quy
Cũng có một lợi thế lớn khi chúng ta sử dụng các biểu thức chính quy
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial1
ĐẦU RA
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial2
Đọc tệp có độ dài cố định
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial3
ĐẦU RA
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial4
Cách sử dụng trong Vòng lặp While
Trong chương về vòng lặp while của Hướng dẫn Python của chúng tôi, chúng tôi đã có một trò chơi đoán số nhỏ
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial5
Như bạn có thể thấy, chúng tôi đã phải khởi tạo
55 bằng 0 để có thể vào vòng lặp. Chúng ta có thể thực hiện việc khởi tạo trực tiếp trong điều kiện vòng lặp bằng một biểu thức gán và đơn giản hóa toàn bộ mã bằng cách này
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial6
ĐẦU RA
x = 5 # can be written as: [x := 5] # valid, but not recomended! # the brackets are crucial7
Đưa đến cùng cực
Chúng tôi đã nói ở đầu trang này rằng một số lập trình viên Python đã mong đợi cấu trúc này trong một thời gian dài. Một lý do tại sao nó không được giới thiệu sớm hơn là thực tế là nó cũng có thể được sử dụng để viết mã vốn khó đọc hơn nếu được sử dụng để mở rộng. Đoạn mã sau đang hiển thị một ví dụ cực đoan như vậy không được khuyến nghị sử dụng