Python 2 ra mắt năm 2000 với những thay đổi lớn đối với việc lưu trữ mã nguồn. Nó giới thiệu nhiều tính năng mong muốn như hỗ trợ unicode, hiểu danh sách và thu gom rác. Một lát sau, Python 2. 2 đã giới thiệu sự hợp nhất của các loại và lớp dưới một hệ thống phân cấp, cho phép Python thực sự hướng đối tượng
Vào khoảng thời gian này, nhiều lập trình viên đã sử dụng Python làm ngôn ngữ kịch bản thay thế. Vì Java đang thống trị thế giới ứng dụng quy mô doanh nghiệp nên Python được sử dụng trong các ứng dụng nhỏ hơn, thích hợp hơn
Ngay cả các nhà phát triển Java cũng bắt đầu sử dụng Python để tăng tốc độ viết mã của họ do khả năng tương tác của nó
bảng chữ cái
Trăn 2. 0 đã giới thiệu kiểu dữ liệu chuỗi Unicode phân bổ các số 16 bit để biểu thị các ký tự thay vì các chuỗi 8 bit tiêu chuẩn. Điều này bổ sung thêm 65.000 ký hiệu được hỗ trợ từ các ngôn ngữ chữ viết không phải chữ Latinh như tiếng Nga, tiếng Trung hoặc tiếng Ả Rập. Nó cũng thêm hỗ trợ cho các ký tự không phải chữ cái như biểu tượng cảm xúc
Cú pháp cho chuỗi Unicode là
u`unicode string`
Bạn cũng có thể sử dụng unicode để mã hóa các chuỗi của riêng mình thành một ký hiệu duy nhất. Việc gọi ký hiệu duy nhất đó sau này trong mã của bạn cho phép bạn tham chiếu cùng một chuỗi được mã hóa đó mà không cần sử dụng thêm khoảng trống hoặc lưu nó vào một biến
Sau đây viết một chuỗi unicode vào tệp và mã hóa nó thành
import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
5import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
Then, you can read that encoded file later using
input = UTF8_streamreader[ open[ '/tmp/output', 'rb'] ]
print repr[input.read[]]
input.close[]
Hiểu danh sách
Khả năng hiểu danh sách được sử dụng để tạo danh sách mới từ các lần lặp khác. Khả năng hiểu danh sách nhận và trả về danh sách, cho phép bạn cắt bớt danh sách theo một tiêu chí nhất định hoặc tạo danh sách mới với các phần tử mới được thao tác
Cú pháp để hiểu danh sách là
new_list = [expression for_loop_one_or_more conditions]
Phần sau đây cho thấy cách bạn có thể sử dụng khả năng hiểu danh sách để trả về một danh sách mới chỉ có các phần tử có trong cả hai danh sách đã chuyển
list_a = [1, 2, 3, 4]
list_b = [2, 3, 4, 5]
common_num = [a for a in list_a for b in list_b if a == b]
print[common_num] # Output: [2, 3, 4]
Chu kỳ thu gom rác
Trăn 2. 0 đại tu hệ thống thu gom rác bằng cách chuyển từ hệ thống dựa trên bộ đếm sang hệ thống dựa trên chu kỳ
Trong hệ thống cũ, mỗi đối tượng sẽ chứa một bộ đếm ghi lại có bao nhiêu đối tượng khác đang trỏ đến nó. Sau đó, đối tượng sẽ tự động bị xóa khi bộ đếm đó về 0. Tuy nhiên, nó sẽ không xóa các đối tượng được trỏ đến nhưng không thể truy cập được, dẫn đến rò rỉ bộ nhớ
Trăn 2. 0 khắc phục điều này bằng các chu kỳ định kỳ gọi trình thu gom rác để xóa các đối tượng không thể truy cập. Các chu kỳ sử dụng chi phí bổ sung nhưng giảm nguy cơ rò rỉ bộ nhớ. Kể từ đó, chi phí chung của các chu kỳ xóa đã giảm do tối ưu hóa
Bài tập tăng cường
Trăn 2. 0 cũng thêm hỗ trợ cho các toán tử gán tăng cường thực hiện thao tác trên biến đã chọn và trả về biến đó. Ví dụ:
import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
6 thêm 1 vào giá trị của import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
7. Nó là một phiên bản ngắn hơn của tuyên bố import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
8Danh sách đầy đủ các toán tử gán được hỗ trợ là
import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
9, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
0, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
1, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
2, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
3, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
4, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
5, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
6, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
7, import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
8 và import codecs
unistr = u'\u0660\u2000ab ...'
[UTF8_encode, UTF8_decode,
UTF8_streamreader, UTF8_streamwriter] = codecs.lookup['UTF-8']
output = UTF8_streamwriter[ open[ '/tmp/output', 'wb'] ]
output.write[ unistr ]
output.close[]
9