Tôi có một hàm Python có một số đối số. Một số trong những đối số này có thể được bỏ qua trong một số tình huống.
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Các đối số d
thông qua h
là các chuỗi mà mỗi chuỗi có ý nghĩa khác nhau. Điều quan trọng là tôi có thể chọn tham số tùy chọn nào để vượt qua trong bất kỳ kết hợp nào. Ví dụ, (a, b, C, d, e)
hoặc (a, b, C, g, h)
, hoặc (a, b, C, d, e, f
, hoặc tất cả trong số họ (đây là những lựa chọn của tôi).
Sẽ thật tuyệt nếu tôi có thể làm quá tải hàm - nhưng tôi đọc rằng Python không hỗ trợ quá tải. Tôi đã cố gắng chèn một số đối số int cần thiết vào danh sách - và gặp lỗi không khớp đối số.
Ngay bây giờ tôi đang gửi các chuỗi trống thay cho một vài đối số bị thiếu đầu tiên dưới dạng giữ chỗ. Tôi muốn có thể gọi một hàm chỉ bằng cách sử dụng các giá trị thực tế.
Có cách nào để làm điều này? Tôi có thể vượt qua một danh sách thay vì danh sách đối số không?
Ngay bây giờ nguyên mẫu sử dụng ctypes trông giống như:
_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]