Chú thích trong Python

Bài viết đăng tại: https://programming.laptrinh.site

Python là một ngôn ngữ lập trình mạnh mẽ và được gõ động. Nó có một cú pháp đơn giản tương tự như viết tiếng Anh đơn giản và được hỗ trợ bởi một lượng lớn các thư viện và tính năng.

Một tính năng như vậy là chú thích. Chú thích là các biểu thức Python tùy ý đưa ra gợi ý về kiểu dữ liệu của biến, tham số hàm và kiểu trả về của hàm.

Các chú thích nhằm cải thiện khả năng đọc và hiểu mã nguồn và được các thư viện bên thứ ba giải thích để cung cấp các dịch vụ hiệu quả và tiết kiệm thời gian như gợi ý cú pháp, kiểm tra kiểu dữ liệu, gợi ý kiểu dữ liệu trong IDE hoặc tự động hoàn thành Môi trường phát triển tích hợp của mã và tạo tài liệu tự động hoặc dựa trên AI.

Có hai loại chú thích trong Python: chú thích hàm và chú thích biến. Trong bài viết này, chúng ta sẽ nói về cả hai loại chú thích trong Python với sự trợ giúp của các ví dụ liên quan.

Chú thích biến trong Python

Chú thích biến là các biểu thức nhằm cung cấp thông tin chi tiết về các kiểu dữ liệu của biến trong Python. Chú thích biến có cú pháp sau.

<variable>: <expression> = <initial value>

Các biểu thức chú thích được viết giữa tên biến và giá trị ban đầu của nó, bắt đầu bằng dấu hai chấm hoặc : . Chúng ta hãy xem xét một số ví dụ để hiểu điều này tốt hơn. Tham khảo mã Python sau.

name: str = "Vaibhav"
age: int = 20
language: str = "Python"
student: bool = True
height: float = 5.9
print("name:", name)
print("age:", age)
print("language:", language)
print("student:", student)
print("height:", height)

Đầu ra:

 name: Vaibhav age: 20 language: Python student: True height: 5.9

Trong ví dụ trên, chúng tôi sử dụng các kiểu dữ liệu Python có sẵn cho các biểu thức. Chúng tôi cũng có thể sử dụng các chuỗi và cung cấp các mô tả chi tiết và ngắn gọn về các biến tại chỗ.

Mã Python sau mô tả điều này.

name: "Name of the person" = "Vaibhav"
age: "Age of the person" = 20
language: "Favorite programming language of the person" = "Python"
student: "Is the person a student?" = True
height: "Height of the person in feet" = 5.9
print("name:", name)
print("age:", age)
print("language:", language)
print("student:", student)
print("height:", height)

Đầu ra:

 name: Vaibhav age: 20 language: Python student: True height: 5.9

Chúng ta có thể sử dụng thuộc tính __annotations___ để truy cập tất cả các chú thích.

Thuộc tính này là một từ điển trong đó các khóa là các biến và giá trị là các biểu thức chú thích. Lưu ý rằng thuộc tính này sẽ chỉ cung cấp thông tin chi tiết về các biến chứ không cung cấp các chức năng.

Tham khảo mã Python sau đây để biết điều này.

 name: "Name of the person" = "Vaibhav" age: "Age of the person" = 20 language: "Favorite programming language of the person" = "Python" student: "Is the person a student?" = True height: "Height of the person in feet" = 5.9 print (__annotations__)

Đầu ra:

{'name': 'Name of the person', 'age': 'Age of the person', 'language': 'Favorite programming language of the person', 'student': 'Is the person a student?', 'height': 'Height of the person in feet'}

Đối với ví dụ đầu tiên, đầu ra sẽ như sau.

{'name': <class 'str'>, 'age': <class 'int'>, 'language': <class 'str'>, 'student': <class 'bool'>, 'height': <class 'float'>}

Cho đến nay, chúng ta mới chỉ thảo luận về các kiểu dữ liệu nguyên thủy như int , floatstr .

Bây giờ chúng ta hãy hiểu cách viết các biểu thức chú thích cho các kiểu dữ liệu phức tạp như list , tuple , set , list các đối tượng, v.v. Đối với điều này, chúng ta sẽ sử dụng mô-đun typing .

Mô-đun typing là một phần của thư viện chuẩn của Python. Hãy cho chúng tôi hiểu cách sử dụng nó cho các loại dữ liệu phức tạp với sự trợ giúp của một ví dụ.

Tham khảo mã Python sau đây để biết điều này.

from typing import List, Tuple, Set

def user():
    return {
        "name": "Vaibhav",
        "username": "vaibhav",
        "password": "vaibhav"
    }

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

middlewares: List[str] = []
points: Tuple[Point] = tuple([Point(0, 0), Point(1, 1)])
numbers: Set[int] = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
users: List[dict] = [user()]
utils: List["function"] = [sum, len, sorted]
pairs: List[List[int]] = [[1, 2], [2, 3], [3, 4]]
print("middlewares:", middlewares, end = "nn")
print("points:", points, end = "nn")
print("numbers:", numbers, end = "nn")
print("utils:", utils, end = "nn")
print("users:", users, end = "nn")
print("pairs:", pairs, end = "nn")
print(__annotations__)

Đầu ra:

 middlewares: []
points: (<__main__.Point object at 0x7fc658e454c0>, <__main__.Point object at 0x7fc658cef610>)
numbers: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
utils: [<built-in function sum>, <built-in function len>, <built-in function sorted>]
users: [{'name': 'Vaibhav', 'username': 'vaibhav', 'password': 'vaibhav'}]
pairs: [[1, 2], [2, 3], [3, 4]]
{'middlewares': typing.List[str], 'points': typing.Tuple[__main__.Point], 'numbers': typing.Set[int], 'users': typing.List[dict], 'utils': typing.List[ForwardRef('function')], 'pairs': typing.List[typing.List[int]]}

Mô-đun typing có các lớp List , TupleSet cho list , tupleset tương ứng, hoạt động như các phiên bản chung của chúng. Ngoài ba lớp này, còn có các lớp chung khác, chẳng hạn như Dict , FrozenSet , DefaultDictOrderedDict .

Các lớp chung này có thể được sử dụng để cung cấp các biểu thức chú thích cho các biến. Bên cạnh các lớp này, bên trong dấu ngoặc [] , các kiểu dữ liệu nguyên thủy, mô tả chuỗi, lớp hoặc các lớp chung khác từ cùng một mô-đun được đặt.

Lưu ý rằng chúng có thể được sử dụng để cung cấp các biểu thức cho các hàm mà chúng ta sẽ tìm hiểu sau. Để tìm hiểu về mô-đun typing , hãy tham khảo tài liệu chính thức tại đây .

Chú thích chức năng trong Python

Chú thích hàm là các biểu thức nhằm cung cấp chi tiết về các kiểu dữ liệu tham số chức năng và các kiểu dữ liệu giá trị trả về của hàm trong Python. Chú thích chức năng có cú pháp sau.

def function(<parameter>: <expression>, <parameter>: <expression> = <default value>) -> <expression>:

Các biểu thức chú thích được đặt bên cạnh các tham số được phân tách bằng dấu hai chấm hoặc : .

Nếu có bất kỳ giá trị mặc định nào, chúng sẽ được đặt sau các biểu thức chú thích. Đối với các kiểu trả về của hàm, chữ ký hàm được theo sau bởi dấu -> hoặc mũi tên và biểu thức chú thích.

Lưu ý rằng dấu hai chấm được đặt ở cuối. Hãy để chúng tôi hiểu các chú thích chức năng với sự trợ giúp của một số ví dụ có liên quan.

Tham khảo mã Python sau đây cho cùng.

from typing import List, Tuple

def create_user(name: str, age: int, hobbies: List[str] = []) -> dict:
    return {
        "name": name,
        "age": age,
        "hobbies": hobbies
    }
    
def create_users(users: List[Tuple]) -> List[dict]:
    result = []
    
    for user in users:
        result.append(create_user(name = user[0], age = user[1], hobbies = user[2]))    
        
    return result
    
u1: dict = create_user("Vaibhav", 20, ["Football", "Video Games"])
data = [
    ("Rick", 40, ["Shooting"]),
    ("Derly", 38, ["Archery", "Tracking"]),
    ("Maggie", 25, []),
    ("Carol", 32, ["Cooking"]),
]
users: List[dict] = create_users(data)
print(u1)
print(users)
print(__annotations__)

Đầu ra:

 {'name': 'Vaibhav', 'age': 20, 'hobbies': ['Football', 'Video Games']} [{'name': 'Rick', 'age': 40, 'hobbies': ['Shooting']}, {'name': 'Derly', 'age': 38, 'hobbies': ['Archery', 'Tracking']}, {'name': 'Maggie', 'age': 25, 'hobbies': []}, {'name': 'Carol', 'age': 32, 'hobbies': ['Cooking']}] {'u1': <class 'dict'>, 'users': typing.List[dict]}

Như chúng ta có thể thấy, hàm create_user() chấp nhận ba giá trị, cụ thể là name , agehobbies , đồng thời trả về một dictionary hoặc dict .

Phương create_users() chấp nhận một danh sách các bộ đại diện cho một danh sách người dùng. Phương thức này trả về một danh sách các từ điển.

Kết quả của lời gọi phương thức đến phương thức create_user() được lưu trữ trong một biến u1 , thuộc loại dict . Và, kết quả của lệnh gọi hàm tới phương thức create_users() được lưu trữ trong một biến users , thuộc loại List[dict] .

Thuộc tính __annotations__ sẽ chỉ cung cấp thông tin chi tiết về các biến. Để tìm nạp chi tiết chú thích về các chức năng, chúng ta có thể sử dụng thuộc tính __annotations__ .

Mã Python sau mô tả điều này.

from typing import List, Tuple

def create_user(name: str, age: int, hobbies: List[str] = []) -> dict:
    return {
        "name": name,
        "age": age,
        "hobbies": hobbies
    }
    
def create_users(users: List[Tuple]) -> List[dict]:
    result = []
    
    for user in users:
        result.append(create_user(name = user[0], age = user[1], hobbies = user[2]))    
        
    return result
    
print(create_user.__annotations__)
print(create_users.__annotations__)

Đầu ra:

 {'name': <class 'str'>, 'age': <class 'int'>, 'hobbies': typing.List[str], 'return': <class 'dict'>} {'users': typing.List[typing.Tuple], 'return': typing.List[dict]}

Từ điển đầu ra sẽ bao gồm tất cả các chi tiết chú thích. Lưu ý rằng đối với kiểu trả về, return là khóa trong từ điển. Đối với các tham số, tên tham số là chìa khóa.

URL Link

https://laptrinh.site/chu-thich-trong-python/

Viết bởi Duy Mạnh. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA