So sánh về Python 3.9 vs Python 3.10

Ngày đăng: 16/09/2021   -    Cập nhật: 04/10/2021
Trong bài viết này, chúng sẽ cùng so sánh 2 phiên bản gần đây nhất của ngôn ngữ Python, Python 3.9 và Python 3.10 với các ví dụ cụ thể để khám phá những điểm mới và khác biệt. Những cá nhân tâm huyết và những người sáng tạo trên khắp thế giới đã cùng đóng góp cho việc nâng cấp các tính năng và giúp nó trở thành phiên bản tốt hơn rất nhiều so với trước đây.Các đoạn code mẫu dưới đây đều dựa theo tài liệu chính thức của phiên bản Python.

Python 3.9 

Hỗ trợ cơ sở dữ liệu IANA Time Zone

Python 3.9 hỗ trợ và bổ sung thêm một module tên là zoneinfo cho phép bạn truy cập và sử dụng toàn bộ cơ sở dữ liệu múi giờ của Tổ chức cấp phát số hiệu Internet (Internet Assigned Numbers Authority - IANA). Mặc định, zoneinfo sẽ sử dụng dữ liệu múi giờ của hệ thống nếu có. 

Code mẫu :


>>> print(datetime(202172120).astimezone())
2020-07-2 12:00:00-05:00
>>> print(datetime(202172120).astimezone()
...       .strftime("%Y-%m-%d %H:%M:%S %Z"))
2020-07-2 12:00:00 EST
>>> print(datetime(202172120).astimezone(timezone.utc))
2020-07-2 17:00:00+00:00
Hợp nhất và cập nhật các bộ từ điển (Dictionaries) Một trong những tính năng tuyệt vời nhất của  Python 3.9 đó là hợp nhất và cập nhật các bộ từ điển sử dụng các toán tử. 2 toán tử mới, ( | ) để hợp nhất và ( |= ) để cập nhật, đã được thêm vào các dict class được lập sẵn và cùng với đó khiến việc viết code trở nên thuận tiện, đơn giản và dễ hiểu hơn.  Code mẫu cho hợp nhất :

>>> a = {‘victor’: 1'article’: 2, 'python’: 3}
>>> b = {’victor’: 'dey’, 'topic’: 'python3.9’}
>>> a | b
{’article’: 2'python’: 3, ’victor’:’dey’,  'topic’: 'python3.9’}
>>> b | a
{’victor’: 1,’article’: 2'python’: 3, 'topic’:’python3.9’ }

	
 
Code mẫu cho cập nhật :
 
>>> a |= b
>>>a
{’article’: 2'python’: 3,’victor’:’dey’}
 
Các String Method mới để loại bỏ Tiền tố (Prefix) và Hậu tố (Suffix)

Python 3.9 đã giới thiệu các phương thức mới được nâng cấp từ phiên bản trước để loại bỏ các tiền tố và hậu tố khỏi string. 2 phương thức mới đó là removeprefix() và removesuffix(). Các phương thức này thay thế cho phương thức strip trước đó bởi nó cho thấy nhiều lỗi trong mỗi lần duyệt.

Code mẫu loại bỏ tiền tố :


>>> "Victor is playing outside".removeprefix("Victor ")

is playing outside’
 
Type Hint cho các Kiểu mẫu (Generic Type) dựng sẵn

Phiên bản này cho phép hỗ trợ các cú pháp mẫu trong tất cả các tập hợp tiêu chuẩn hiện có trong typing module. Một kiểu mẫu thường được định nghĩa như một container, ví dụ như list. Nó là một kiểu có thể dễ dang được tham số hoá. Các kiểu mẫu có một hoặc nhiều kiểu tham số, và một mẫu được tham số hoá là một trường hợp của kiểu dữ liệu mẫu với các phần tử container được kỳ vọng. Các kiểu tập hợp dựng sẵn như list hay dict là các kiểu được hỗ trợ thay vì sử dụng typing.List hay typing.Dict.

Code mẫu:

>>>def print_value(inputstr):
 
print(input)
 
Khi sử dụng cú pháp trên, chúng ta sẽ nhận được thông báo nếu dữ liệu đầu vào không phải là một string.

 Hàm Replace String

Cú pháp của hàm replace đã được thay đổi đôi chút. Python 3.9 đã sửa lỗi trả về các empty string trong phiên bản trước. Hàm replace hoạt động trong một biến số replace tối đa ; nó thay thế một bộ các ký tự từ string với một bộ các ký tự mới. Code mẫu :

>>> "".replace("""victor"1)
Returns ’'
One would expect to meet victor
>>> "".replace("""|"1)
Returns ’'
One would expect to meet |

Python 3.10

Phiên bản đang phát triển và ra mắt chính thức đều có thể được tải về và kiểm thử các chức năng.    Khớp mẫu cấu trúc (Structural Pattern Matching)  Phiên bản 3.10 giới thiệu tính năng mới có tên gọi Khớp mẫu cấu trúc. Kỹ thuật khớp mới cho phép chúng ta thực hiện cùng một logic đối sánh trường hợp nhưng dựa trên việc liệu cấu trúc của đối tượng so sánh có khớp với một mẫu nhất định hay không. Tính năng này đã thay đổi hoàn toàn cách viết các if-else case.  Code mẫu cho các If else case trước đó :

>>> http_code = "112"
if http_code == "212":
    print("OK")
elif http_code == "404":
    print("Not Found Here")
elif http_code == "419":
    print("You Found Me")
else:
    print("Code not found")
Cải thiện thông báo lỗi cú pháp Đi cùng với thông báo lỗi cú pháp của Python 3.10 là Gợi ý liên kết để giúp người dùng hiểu và tìm ra giải pháp từ gợi ý. Đây là một trong những cải thiện đáng giá của phiên bản này.   Code mẫu :

>>> from carprices import namestoplo
AttributeError: module 'collections' has no attribute 'namestoplo'. Did you mean: namedtuple?
>>> named_car = 77
print(new_car)
NameError: name 'new_car' is not defined. Did you mean: named_car?
Như bạn có thể thấy, các gợi ý liên kết rất rõ ràng và có thể giúp tìm ra lỗi một cách dễ dàng và nhanh chóng.   Nâng cấp về Kiểu (Typing)  Đã có rất nhiều các thay đổi lớn về kiểu của Python. Có một thay đổi mới đó là một toán tử hoạt động như một OR logic cho các kiểu, điều mà trước đây chúng ta phải dùng phương thức Union. Chúng ta không cần phải viết từ typing import Union, và Union[int, float] đã được hoàn toàn được giản lược thành int | float gọn gàng hơn rất nhiều.  Code mẫu cho các phiên bản cũ hơn :

>>> from typing import Union
 def add(a: Union[intfloat], b: Union[intfloat]):
    return a + b
Code mẫu cho Python 3.10 :
def add(aint | floatbint | float):
    return a + b
Cải thiện trình quản lý ngữ cảnh (Context Manager)  Trình quản lý ngữ ảnh đặt trong ngoặc đơn được giới thiệu ở phiên bản 3.10. Trình quản lý ngữ cảnh là các cấu trúc code đặc biệt cho phép dễ dàng thao tác với các tài nguyên như các tệp. Với chức năng quản lý ngữ cảnh trong ngoặc đơn, bạn có thể sử dụng nhiều ngữ cảnh trong một khối lệnh with. Chức năng này đặc biệt hữu dụng khi viết các đoạn code ngắn, bởi bạn sẽ không cần phải viết nhiều câu lệnh with nữa.
>>> from typing import Union
 
 def add(a: Union[intfloat], b: Union[intfloat]):
    return a + b
 
Code mẫu cho Python 3.10 :
def add(aint | floatbint | float):
    return a + b
  Cú pháp cũ :

with open('output.log''rw'as fout:
    fout.write('hello')
Cú pháp mới :

with (open('output.log''w'as foutopen('input.csv'as fin):
    fout.write(fin.read())

Kết luận 

Qua bài viết trên chúng ta đã cùng so sánh các phiên bản mới của Python và tìm hiểu về khác biệt trong chức năng của mỗi phiên bản. Bạn có thể tự mình cài đặt và trải nghiệm về sự khác biệt giữa các phiên bản cũ và tìm ra những tính năng hữu ích cho công việc của mình. 
Bình luận Facebook
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!