0
0
Posts
NV
Ngen Vanngenvan

*args và **kwargs trong Python

Đăng vào 8 tháng trước

• 3 phút đọc

Chủ đề:

Python

Trong Python, *args**kwargs là hai cú pháp đặc biệt được sử dụng khi định nghĩa hàm để cho phép truyền vào một số lượng tham số không giới hạn. Chúng giúp tăng tính linh hoạt và khả năng mở rộng cho các hàm của bạn.

*args (Non-Keyword Arguments)

*args được sử dụng để truyền một số lượng tham số không xác định vào hàm dưới dạng một tuple. Ký hiệu * trước tham số args cho phép bạn gói tất cả các tham số còn lại thành một tuple sau khi các tham số vị trí đã được gán giá trị.

Ví dụ:

python Copy
def print_numbers(*args):
    for arg in args:
        print(arg)

print_numbers(1, 2, 3)  # In ra: 1 2 3
print_numbers(4, 5)     # In ra: 4 5

Trong ví dụ trên, hàm print_numbers nhận bất kỳ số lượng tham số nào và in chúng ra. Bạn cũng có thể kết hợp *args với các tham số vị trí bình thường:

python Copy
def print_info(name, *args):
    print(f"Name: {name}")
    print("Additional info:")
    for arg in args:
        print(arg)

print_info("Alice", "Engineer", 25, "New York")
# In ra:
# Name: Alice
# Additional info:
# Engineer
# 25
# New York

**kwargs (Keyword Arguments)

**kwargs được sử dụng để truyền một số lượng tham số không xác định vào hàm dưới dạng một dictionary. Ký hiệu ** trước tham số kwargs cho phép bạn gói tất cả các tham số từ khóa còn lại thành một dictionary sau khi các tham số vị trí và *args đã được gán giá trị.

Ví dụ:

python Copy
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="New York")
# In ra:
# name: Alice
# age: 25
# city: New York

Trong ví dụ trên, hàm print_info nhận bất kỳ số lượng tham số từ khóa nào và in chúng ra dưới dạng cặp khóa-giá trị. Bạn cũng có thể kết hợp **kwargs với các tham số vị trí và *args:

python Copy
def print_details(name, *args, **kwargs):
    print(f"Name: {name}")
    print("Additional info:")
    for arg in args:
        print(arg)
    print("Keyword arguments:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_details("Alice", "Engineer", 25, city="New York", country="USA")
# In ra:
# Name: Alice
# Additional info:
# Engineer
# 25
# Keyword arguments:
# city: New York
# country: USA

Một Số Lưu Ý

  • Thứ tự của *args**kwargs trong định nghĩa hàm là quan trọng. *args phải đứng trước **kwargs
  • Bạn có thể sử dụng bất kỳ tên nào cho *args**kwargs miễn là tuân thủ quy tắc đặt tên biến trong Python. Tuy nhiên, *args**kwargs là quy ước đặt tên phổ biến.
  • Nếu bạn không truyền bất kỳ tham số nào vào hàm, *args sẽ là một tuple rỗng, và **kwargs sẽ là một dictionary rỗng.
  • Bạn có thể sử dụng * để "unpack" một tuple hoặc ** để "unpack" một dictionary khi gọi hàm

Kết Luận

*args**kwargs là hai cú pháp hữu ích trong Python, cho phép bạn định nghĩa các hàm linh hoạt hơn và có khả năng xử lý một số lượng tham số không giới hạn. Chúng giúp tăng tính mở rộng và tái sử dụng của mã nguồn, đồng thời cũng làm cho việc gọi hàm trở nên dễ dàng hơn trong nhiều trường hợp.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào