Luôn x.split(y)
luôn trả về một danh sách các 1 + x.count(y)
mục là một sự đều đặn quý giá - như @ gnibbler đã chỉ ra rằng nó tạo ra split
và join
đảo ngược chính xác của nhau (như chúng rõ ràng phải như vậy), nó cũng ánh xạ chính xác ngữ nghĩa của tất cả các loại bản ghi được nối với dấu phân cách ( chẳng hạn như csv
các dòng tệp [[mạng các vấn đề trích dẫn]], các dòng /etc/group
trong Unix, v.v.), nó cho phép (như câu trả lời của @ Roman đã đề cập) dễ dàng kiểm tra (ví dụ) đường dẫn tuyệt đối so với đường dẫn tương đối (trong đường dẫn tệp và URL), và kể từ đó trở đi.
Một cách khác để xem xét nó là bạn không nên chỉ tung thông tin ra ngoài cửa sổ mà không có lợi. Điều gì sẽ đạt được khi làm x.split(y)
tương đương với x.strip(y).split(y)
? Không có gì, tất nhiên - thật dễ dàng để sử dụng hình thức thứ hai khi đó là những gì bạn có ý nghĩa, nhưng nếu các hình thức đầu tiên được tùy tiện coi là có nghĩa là một thứ hai, bạn sẽ có rất nhiều việc phải làm khi bạn làm muốn là người đầu tiên ( mà không phải là hiếm, như đoạn trước đã chỉ ra).
Nhưng thực sự, suy nghĩ về tính đều đặn của toán học là cách đơn giản và tổng quát nhất mà bạn có thể tự dạy mình để thiết kế các API có thể chuyển được. Để lấy một ví dụ khác, điều rất quan trọng là đối với bất kỳ giá trị nào x
và y
x == x[:y] + x[y:]
- điều này ngay lập tức chỉ ra lý do tại sao nên loại trừ một điểm cực trị của phép cắt . Bạn có thể hình thành khẳng định bất biến càng đơn giản, thì càng có nhiều khả năng rằng ngữ nghĩa kết quả là những gì bạn cần trong sử dụng thực tế - một phần của sự thật huyền bí rằng toán học rất hữu ích trong việc xử lý vũ trụ.
Hãy thử xây dựng công thức bất biến cho một split
phương ngữ trong đó các dấu phân cách ở đầu và cuối là dấu phân cách đặc biệt ... ví dụ ngược lại: các phương thức chuỗi chẳng hạn như isspace
không đơn giản đến mức tối đa - x.isspace()
tương đương với x and all(c in string.whitespace for c in x)
- hàng đầu ngớ ngẩn đó x and
là lý do tại sao bạn thường thấy mình đang viết mã not x or x.isspace()
, để quay trở lại sự đơn giản mà lẽ ra phải được thiết kế thành các is...
phương thức chuỗi (theo đó một chuỗi rỗng "là" bất cứ thứ gì bạn muốn - trái với ý thức con người trên đường phố, có thể [[tập hợp rỗng, giống như số không & c, luôn khiến hầu hết mọi người nhầm lẫn ;-)]], nhưng hoàn toàn phù hợp với ý thức chung toán học rõ ràng đã được tinh chỉnh ! -).