Hướng dẫn đối số Python: vị trí, từ khóa, *args, **kwargs

1. Đối số trong Python là gì?

Trong Python, đối số là phương tiện để hàm hoặc phương thức nhận dữ liệu từ bên ngoài và thực hiện các xử lý cụ thể. Bằng cách truyền đối số cho hàm, có thể xử lý dữ liệu linh hoạt, đồng thời nâng cao khả năng tái sử dụng và mở rộng của chương trình. Bài viết này sẽ giải thích theo từng bước, từ cơ bản đến ứng dụng, về đối số trong Python.

Vai trò cơ bản của hàm và đối số

Hàm là một tập hợp các lệnh dùng để thực hiện một tác vụ cụ thể. Đối số là dữ liệu đầu vào được truyền cho hàm và được sử dụng như sau:
def greet(name):
    print(f"Xin chào, {name}!")
Trong ví dụ này, bằng cách truyền bất kỳ tên nào cho đối số name, bạn có thể hiển thị một thông điệp riêng.
greet("佐川")  # Kết quả: Xin chào, 佐川!

2. Những điều cơ bản về đối số trong Python

Tiếp theo, chúng ta sẽ xem cách sử dụng đối số trong Python từ các góc độ: đối số vị trí, đối số từ khóa và đối số mặc định。

Đối số vị trí và tầm quan trọng của chúng

Đối số vị trí được chuyển đến các tham số trong hàm theo thứ tự mà chúng được cung cấp khi gọi hàm。
def add(a, b):
    return a + b

result = add(5, 3)  # Kết quả: 8

Sử dụng đối số từ khóa

Với đối số từ khóa, bạn có thể truyền giá trị cho hàm một cách tường minh mà không cần quan tâm đến thứ tự của các đối số。
def introduce(name, age):
    print(f"Tôi là {name}. Tôi {age} tuổi.")

introduce(age=25, name="佐川")  # Kết quả: Tôi là 佐川. Tôi 25 tuổi.

Sử dụng đối số mặc định

Bằng cách thiết lập đối số mặc định, bạn có thể dùng giá trị mặc định khi đối số được lược bỏ。
def greet(name="Khách"):
    print(f"Xin chào, {name}!")

greet()  # Kết quả: Xin chào, Khách!

Thứ tự của đối số

Khi sử dụng đồng thời đối số vị trí và đối số từ khóa, bạn phải đặt đối số vị trí trước và đối số từ khóa sau. Nếu sai thứ tự, sẽ xảy ra lỗi。</final

3. Đối số có độ dài thay đổi trong Python (*args và **kwargs)

Cách sử dụng *args

*args được dùng để truyền bất kỳ số lượng đối số vị trí nào vào hàm. Nhờ đó, bạn có thể tạo các hàm tổng quát hơn.
def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3)  

Cách sử dụng **kwargs

Bằng **kwargs, bạn có thể nhận các đối số từ khóa tùy ý dưới dạng từ điển.
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="佐川", age=30, job="nhà văn")  

Kết hợp *args**kwargs

Bằng cách kết hợp *args**kwargs, bạn có thể tạo các hàm linh hoạt nhận cả đối số vị trí và đối số từ khóa.
def process_data(*args, **kwargs):
    total = sum(args)
    print(f"Tổng: {total}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

process_data(1, 2, 3, name="佐川", age=30)

4. Ứng dụng của đối số và ví dụ minh họa

Ví dụ ứng dụng thực tiễn: Xử lý tham số của API

Trong các lời gọi API, cần xử lý các tham số động. Nhờ sử dụng *args**kwargs, bạn có thể xử lý linh hoạt nhiều tham số.
def api_call(endpoint, **params):
    print(f"Điểm cuối API: {endpoint}")
    for key, value in params.items():
        print(f"{key}: {value}")

api_call("/user", id=123, action="view")

Ứng dụng trong xử lý dữ liệu quy mô lớn

Ngay cả với các hàm xử lý lượng dữ liệu lớn, bạn cũng có thể dùng *args để xử lý hiệu quả các đối số có số lượng thay đổi.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Xử lý lỗi và xác thực đối số

Xử lý lỗi về số lượng đối số

Khi số lượng đối số mà hàm mong đợi không đủ, bạn có thể thực hiện xử lý lỗi để ngăn chương trình bị sập。
def add_numbers(*args):
    if len(args) < 2:
        raise ValueError("Cần ít nhất 2 đối số")
    return sum(args[:2])

Xác thực kiểu dữ liệu

Bằng cách kiểm tra kiểu của đối số, bạn có thể ngăn các lỗi không mong muốn。
def multiply(a, b):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("Các đối số phải là số")
    return a * b

Xử lý lỗi bằng try-except

Bằng cách sử dụng cú pháp try-except, bạn có thể bắt lỗi và xử lý chúng một cách thích hợp。
def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "Không thể chia cho 0"
    except TypeError:
        return "Vui lòng nhập số"
    return result

6. Tổng kết

Bài viết này đã bao quát từ kiến thức cơ bản đến nâng cao về tham số trong Python. Đặc biệt, bài viết nhấn mạnh tầm quan trọng của các phương pháp định nghĩa hàm linh hoạt sử dụng *args**kwargs, cũng như xử lý lỗi và kiểm tra tính hợp lệ。

Các điểm chính:

  • Kiến thức cơ bản về tham số vị trí, tham số từ khóa và tham số mặc định
  • Định nghĩa hàm linh hoạt sử dụng *args**kwargs
  • Tầm quan trọng của xử lý lỗi và kiểm tra tính hợp lệ cho các tham số
Dựa trên những kiến thức này, bạn sẽ có thể tạo ra mã Python linh hoạt và vững chắc, hữu ích trong công việc thực tế。
年収訴求