Tôi muốn tái cấu trúc hàm Python lớn thành các hàm nhỏ hơn. Ví dụ: hãy xem xét đoạn mã sau đây:Python: tránh cảnh báo pylint về quá nhiều đối số
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
Tất nhiên, đây là một ví dụ nhỏ. Trong thực tế, mã này phức tạp hơn. Quan điểm của tôi là nó chứa nhiều biến phạm vi địa phương sẽ phải được chuyển đến hàm được trích xuất, có thể trông giống như:
def mysum(x1, x2, x3, x4, x5, x6, x7, x8, x9):
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
Vấn đề là pylint sẽ kích hoạt cảnh báo về quá nhiều đối số. tôi có thể tránh được những cảnh báo bằng cách làm một cái gì đó như:
def mysum(d):
x1 = d['x1']
x2 = d['x2']
...
x9 = d['x9']
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
def mybigfunction():
...
d = {}
d['x1'] = x1
...
d['x9'] = x9
x = mysum(d)
nhưng cách tiếp cận này Loos xấu xí với tôi, nó đòi hỏi viết nhiều mã mà thậm chí còn không cần thiết.
Có cách nào tốt hơn để làm điều đó không?
Tôi tin rằng mysum() có thể được đơn giản hóa thành: 'trả lại tổng (d.values ())' hoặc ít nhất là 'tổng trở lại ([d [foo] cho foo trong (' x1 ',' x2 ', .. ., 'x9')]) '. Tôi có quá hài lòng về danh sách không? – MatrixFrog
Các mysum() chỉ là một trừu tượng, trong các kịch bản thực sự mã cần được trích xuất phức tạp hơn nhiều. Quan điểm của tôi là phải chuyển nhiều biến cho hàm được trích xuất và tránh cảnh báo pylint nếu có thể (không làm cho pylint rõ ràng chỉ bỏ qua cảnh báo đó). – Anonymous