Tôi có một hàm Python có nhiều đối số. Một số các đối số này có thể được bỏ qua trong một số trường hợp.Làm cách nào để tạo một hàm Python với các đối số tùy chọn?
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
Những lập luận d
qua h
là chuỗi mà mỗi người đều có ý nghĩa khác nhau. Điều quan trọng là tôi có thể chọn tham số tùy chọn để chuyển vào 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ả chúng (đây là những lựa chọn của tôi).
Sẽ rất tuyệt nếu tôi có thể làm quá tải chức năng - 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ố các đối số int cần thiết trong danh sách - và có một lỗi đối số không khớp.
Hiện tại, tôi đang gửi các chuỗi rỗng thay cho các đối số thiếu đầu tiên như trình 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 để thực hiện việc này không? Tôi có thể chuyển 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ư sau:
_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]
liên quan: [gì ** (double sao/dấu hoa thị) và * (sao/dấu hoa thị) làm cho các thông số ?] (https://stackoverflow.com/q/36901/3357935) –