Python có một chuỗi chứa phương thức phụ không?
99% trường hợp sử dụng sẽ được đề cập bằng từ khóa,
3, trả về start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
4 hoặc start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
5: of use cases will be covered using the keyword, start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3, which returns start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
4 or start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
5:'substring' in any_string
Đối với trường hợp sử dụng nhận chỉ mục, hãy sử dụng
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
6 [trả về -1 về thất bại và có các đối số vị trí tùy chọn]:start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
hoặc
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
7 [như start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
8 nhưng làm tăng giá trị thất bại]:start = 100
end = 1000
any_string.index['substring', start, end]
Giải trình
Sử dụng toán tử so sánh
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3 vì- ngôn ngữ dự định sử dụng nó và
- Các lập trình viên Python khác sẽ mong đợi bạn sử dụng nó.
>>> 'foo' in '**foo**'
True
Điều ngược lại [bổ sung], mà câu hỏi ban đầu đã yêu cầu, là
start = 100
end = 1000
any_string.index['substring', start, end]
0:>>> 'foo' not in '**foo**' # returns False
False
Điều này về mặt ngữ nghĩa giống như
start = 100
end = 1000
any_string.index['substring', start, end]
1 nhưng nó dễ đọc hơn và được cung cấp rõ ràng hơn trong ngôn ngữ như là một cải tiến khả năng đọc.Tránh sử dụng start = 100
end = 1000
any_string.index['substring', start, end]
2
start = 100
end = 1000
any_string.index['substring', start, end]
Phương pháp "Chứa" thực hiện hành vi cho
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3. Ví dụ này,str.__contains__['**foo**', 'foo']
trả lại
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
4. Bạn cũng có thể gọi chức năng này từ thể hiện của SuperString:'**foo**'.__contains__['foo']
Nhưng đừng. Các phương pháp bắt đầu với dấu gạch dưới được coi là không công khai về ngữ nghĩa. Lý do duy nhất để sử dụng điều này là khi thực hiện hoặc mở rộng chức năng
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3 và start = 100
end = 1000
any_string.index['substring', start, end]
0 [ví dụ: nếu phân lớp con start = 100
end = 1000
any_string.index['substring', start, end]
7]:class NoisyString[str]:
def __contains__[self, other]:
print[f'testing if "{other}" in "{self}"']
return super[NoisyString, self].__contains__[other]
ns = NoisyString['a string with a substring inside']
và bây giờ:
>>> 'substring' in ns
testing if "substring" in "a string with a substring inside"
True
Không sử dụng start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
8 và start = 100
end = 1000
any_string.index['substring', start, end]
9 để kiểm tra "chứa"
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
start = 100
end = 1000
any_string.index['substring', start, end]
Không sử dụng các phương thức chuỗi sau để kiểm tra "chứa":
>>> '**foo**'.index['foo']
2
>>> '**foo**'.find['foo']
2
>>> '**oo**'.find['foo']
-1
>>> '**oo**'.index['foo']
Traceback [most recent call last]:
File "", line 1, in
'**oo**'.index['foo']
ValueError: substring not found
Các ngôn ngữ khác có thể không có phương pháp để kiểm tra trực tiếp các chất nền, và do đó bạn sẽ phải sử dụng các loại phương thức này, nhưng với Python, việc sử dụng toán tử so sánh
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3 sẽ hiệu quả hơn nhiều.Ngoài ra, đây không phải là sự thay thế thả vào cho
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3. Bạn có thể phải xử lý các trường hợp ngoại lệ hoặc >>> 'foo' in '**foo**'
True
2 và nếu họ trả lại >>> 'foo' in '**foo**'
True
3 [vì họ tìm thấy chất nền lúc đầu], cách giải thích boolean là start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
5 thay vì start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
4.Nếu bạn thực sự có nghĩa là
>>> 'foo' in '**foo**'
True
6 thì hãy nói nó.So sánh hiệu suất
Chúng ta có thể so sánh nhiều cách khác nhau để hoàn thành cùng một mục tiêu.
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
0Và bây giờ chúng ta thấy rằng sử dụng
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3 nhanh hơn nhiều so với những người khác. Ít thời gian hơn để thực hiện một hoạt động tương đương là tốt hơn:start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
1Làm thế nào start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3 có thể nhanh hơn start = 100
end = 1000
any_string.index['substring', start, end]
2 nếu start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
3 sử dụng start = 100
end = 1000
any_string.index['substring', start, end]
2?
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
start = 100
end = 1000
any_string.index['substring', start, end]
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
start = 100
end = 1000
any_string.index['substring', start, end]
Đây là một câu hỏi tiếp theo tốt.
Chúng ta hãy tháo rời các chức năng với các phương pháp quan tâm:
start = 0
stop = len[any_string]
any_string.find['substring', start, stop]
2Vì vậy, chúng tôi thấy rằng phương pháp
>>> 'foo' not in '**foo**' # returns False
False
2 phải được tra cứu riêng và sau đó được gọi từ máy ảo Python - điều này sẽ giải thích đầy đủ sự khác biệt.