Python 3.9 có gì hot?

Ngày đăng: 19/09/2020   -    Cập nhật: 22/09/2020
Python luôn phát triển theo nhu cầu của cộng đồng và nó sẽ là ngôn ngữ được sử dụng nhiều nhất trong tương lai.


Python 3.9.0 gần như đã sẵn sàng. Bản phát hành 3.9.0rc2, là bản xem trước trước khi phát hành bản phát hành cuối cùng của Python 3.9.0 vào 05/10/2020.



Python 3.9 có gì hot?

Python 3.9 có gì hot?


Phiên bản Python 3.9 đến mang theo một lịch trình phát hành nhanh hơn, tăng hiệu suất, các hàm về chuỗi tiện dụng hơn, dictionary union operator và các API nội bộ nhất quán và ổn định hơn.


Bài viết này sẽ bao gồm:



  • Toán tử hợp nhất
  • Các hàm string
  • Gợi ý kiểu
  • Các hàm toán học mới
  • Trình phân tích cú pháp mới
  • Phạm vi địa chỉ IPv6
  • Module mới: Zoneinfo
  • Thay đổi ngôn ngữ khác


1. Toán tử hợp nhất / cập nhật



Đây là một trong những tính năng mới yêu thích của mình.


Trong phiên bản Python 3.9. Nếu bạn có hai dict a và b, bây giờ bạn có thể sử dụng các toán tử này để hợp nhất và cập nhật chúng.


Chúng ta có toán tử hợp nhất |:




a = {1'a'2'b'3'c'}
b = {4'd'5'e'}

c = a | b
print(c)
 


Khi chạy chương trình, kết quả ta nhận được là:



{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
 


Và nếu bạn sử dụng toán tử cập nhật |=, nó sẽ cập nhật dict gốc:



a = {1'a'2'b'3'c'}
b = {4'd'5'e'}

a |= b
print(a)
 


Khi chạy chương trình in ra dict a ở trên, ta được:
 


{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
 


Nếu từ dict của chúng ta chia sẻ một key chung, thì cặp key: value trong từ dict thứ hai sẽ được sử dụng:



a = {1'a'2'b'3'c'6'ABC'}
b = {4'd'5'e'6'DE'}
print(a | b)
 


Như ta thấy, key 6 giống nhau ở hai dict a và b, khi chạy chương trình, ta có kết quả:



{1: 'a', 2: 'b', 3: 'c', 6: 'DE', 4: 'd', 5: 'e'}
 


Ngoài ra, một hành vi thú vị khác của toán tử |= là khả năng cập nhật dict với các cặp key: value mới bằng cách sử dụng đối tượng có thể lặp lại - như list hoặc generator:



a = {'a''Một''b''Hai'}
b = ((i, i**2for i in range(3))
a |= b
print(a)
 


Kết quả nhận được là:



{'a': 'Một', 'b': 'Hai', 0: 0, 1: 1, 2: 4}
 


Nếu chúng ta cố gắng làm tương tự với toán tử hợp nhất chuẩn | chúng ta sẽ nhận được TypeError vì nó sẽ chỉ cho phép hợp nhất giữa các dict.


2. Các hàm string mới



str.removeprefix(substring: string) là một phương thức trả về một chuỗi mới với tiền tố được cắt bớt nếu str bắt đầu bằng nó. Nếu khác nó, phương thức sẽ trả về chuỗi ban đầu.


str.removesuffix(substring: string) là một phương thức trả về một chuỗi mới với hậu tố được cắt bớt nếu str kết thúc bằng nó. Nếu khác nó, phương thức sẽ trả về chuỗi ban đầu.




# Loại bỏ tiền tố
"HelloWorld".removeprefix("Hello"# Kết quả: World

# Loại bỏ hậu tố
"HelloWorld".removesuffix("World"# Kết quả: Hello
 


Bạn cũng có thể đạt được hiệu quả tương tự nếu sử dụng string[len(prefix):] cho tiền tố hoặc string(-len[suffix]:) cho hậu tố.


Đây là những hoạt động rất đơn giản và do đó cũng là những chức năng rất đơn giản, nhưng nếu bạn thực hiện những thao tác này khá thường xuyên, nó sẽ giúp bạn rất nhiều đấy.



3. Gợi ý kiểu



Python là ngôn ngữ động, Python chỉ định động các kiểu dữ liệu cho một biến, có nghĩa là chúng ta không cần chỉ định kiểu dữ liệu trong code của mình.


Điều này không sao, nhưng đôi khi nó có thể gây nhầm lẫn!


Để phân bổ tĩnh các kiểu dữ liệu, Type hinting được sử dụng.


Điều này đã được giới thiệu trong Python 3.5. Kể từ 3.5, chúng ta có thể chỉ định các kiểu, nhưng nó khá cồng kềnh.


Bản cập nhật 3.9 này đã thực sự thay đổi điều đó, bây giờ bạn có thể sử dụng các kiểu tập hợp tích hợp sẵn (như list và dict) làm kiểu chung.


Trước đó, bạn phải import các kiểu (List hoặc Dict), nhưng với 3.9 thì:




def greet_all(names: list[str]) -> None:
    for name in names:
        print("Hello", name)
 


... không cần phải làm thế nữa.


4. Các hàm toán học mới



Trong module math, một loạt các chức năng linh tinh đã được thêm vào hoặc cải thiện.


Bắt đầu với việc cải tiến một chức năng hiện có.




import math

# Ước chung lớn nhất
math.gcd(8064152)
# 8
 


Trước đây, hàm gcd tính Ước số chung lớn nhất chỉ có thể được áp dụng cho 2 số, buộc các lập trình viên phải thực hiện một số việc như sau math.gcd(80, math.gcd (64, 152)), khi làm việc với nhiều số hơn.


Bắt đầu với Python 3.9, chúng ta có thể áp dụng nó cho bất kỳ số nào.


Bổ sung mới đầu tiên cho module math là hàm math.lcm:




# Bội chung nhỏ nhất
math.lcm(485)
# 40
 


math.lcm tính toán Bội số Chung nhỏ nhất của các đối số của nó. Tương tự như với GCD, nó cho phép một biến làm đối số.


5. Trình phân tích cú pháp mới



Đây là một thay đổi ngoài tầm nhìn nhưng có tiềm năng trở thành một trong những thay đổi quan trọng nhất đối với sự phát triển của Python trong tương lai.


Trước đây, Python sử dụng LL(1).


Còn Python 3.9 sử dụng trình phân tích cú pháp mới là trình phân tích cú pháp dựa trên PEG.


PEG linh hoạt hơn LL(1) khi nói đến việc xây dựng các tính năng mới trong ngôn ngữ.


Tài liệu chính thức nói rằng tính linh hoạt này sẽ được nhìn thấy trong Python 3.10 trở lên.


Module ast sử dụng trình phân tích cú pháp mới và tạo ra AST giống như trình phân tích cú pháp cũ.



6. Phạm vi địa chỉ IPv6



Một thay đổi khác được giới thiệu trong Python 3.9 là khả năng chỉ định phạm vi địa chỉ IPv6.


Phạm vi IPv6 được sử dụng để chỉ định phần nào của internet là địa chỉ IP tương ứng hợp lệ.


Phạm vi có thể được chỉ định ở cuối địa chỉ IP bằng cách sử dụng dấu %


Ví dụ: 
3FFE:0:0:1:200:F8FF:FE75:50DF%2 - vì vậy địa chỉ IP này thuộc phạm vi 2 là địa chỉ liên kết cục bộ.


Vì vậy, trong trường hợp bạn cần xử lý địa chỉ IPv6 bằng Python, bây giờ bạn có thể làm như sau:




from ipaddress import IPv6Address
addr = IPv6Address('ff02::fa51%1')
print(addr.scope_id)
# "1" - interface-local IP address
 



Lưu ý: Hai địa chỉ có phạm vi khác nhau không bằng nhau khi so sánh bằng cách sử dụng các toán tử Python cơ bản.


7. Module mới: Zoneinfo



Module zoneinfo hỗ trợ cơ sở dữ liệu múi giờ IANA cho thư viện chuẩn. Nó thêm zoneinfo.ZoneInfo, một khai triển datetime.tzinfo cụ thể được hỗ trợ bởi dữ liệu múi giờ của hệ thống.


8. Các thay đổi khác



__import __() hiện gây ra ImportError thay vì ValueError, thường xảy ra khi một lần import vượt qua package cao nhất của nó.


"".replace("", s, n) bây giờ trả về s thay vì một chuỗi trống cho tất cả n khác 0. Bây giờ nó nhất quán với '"".replace (''", s).


Python nhanh hơn



Mọi bản phiên bản của Python đều được cải thiện hiệu suất so với phiên bản trước. Python 3.9 có hai cải tiến lớn giúp tăng hiệu suất mà không yêu cầu bất kỳ thay đổi nào đối với code hiện có.


Cải tiến đầu tiên liên quan đến việc sử dụng nhiều hơn giao thức vectorcall.


Điều này thực hiện nhiều cuộc gọi hàm phổ biến bằng cách giảm thiểu hoặc loại bỏ các đối tượng tạm thời.



Python chuyển sang chu kỳ phát hành hàng năm



Python 3.9 giới thiệu một số tích hợp mới bao gồm range, tuple, set, frozenset, list, dict - sử dụng vectorcall, giúp tăng tốc độ thực thi.


Cho đến thời điểm này, Python đã được phát triển và phát hành trong vòng mười tám tháng. PEP 602 đề xuất rằng nhóm phát triển Python áp dụng chu kỳ phát hành hàng năm và đề xuất đó đã được chấp nhận.



Tổng kết



Với mỗi bản phát hành mới, Python đã trở nên nhanh hơn và mạnh mẽ hơn, giúp bạn dễ dàng thao tác với các kiểu dữ liệu phổ biến hơn.


Những điểm mới trong Python 3.9 có lẽ không phải tất cả những thay đổi này đều liên quan đến công lập trình Python hàng ngày của bạn, nhưng mình nghĩ ít nhất bạn nên biết vì chúng có thể hữu ích vào một số thời điểm nào đó.


> Nếu bạn yêu thích ngôn ngữ Python và muốn học python một cách bài bản hơn thì xem ngay KHÓA HỌC PYTHON tại NIIT - ICT Hà Nội.


Tham khảo:


 
Ayushi Rawat

---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
 
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!