Computer >> Máy Tính >  >> Lập trình >> Python

Sự khác biệt giữa trình lặp Python và trình lặp có thể lặp lại

Một có thể lặp lại có thể được định nghĩa một cách lỏng lẻo như một đối tượng sẽ tạo ra một trình vòng lặp khi được chuyển đến phương thức tích hợp sẵn iter (). Có một số điều kiện, để một đối tượng có thể lặp lại, đối tượng của lớp cần xác định hai mehtod cá thể:__len__ và __getitem__. Một đối tượng đáp ứng các điều kiện này khi được truyền cho phương thức iter () sẽ tạo ra một trình lặp.

Hãy hiểu ví dụ dưới đây, để hiểu có thể lặp lại -

string = "Tutorialspoint"
for char in string:
print (char)

Đầu ra

T
u
t
o
r
i
a
l
s
p
o
i
n
t

Phía trên mã sử dụng phương thức __getitem __ (index) sẽ trả về phần tử ở vị trí được chỉ định bởi chỉ mục.

Vì vậy, đoạn mã trên của chúng tôi -

  • Bắt đầu với chỉ mục 0
  • Chuỗi cuộc gọi .__ getitem __ (chỉ mục)
  • Lỗi IndexError tăng lên? Dừng lại
  • Phần nội dung chạy của vòng lặp
  • Chỉ mục tăng dần, hoàn nguyên về bước 2.

Trình lặp lại

Các trình lặp được định nghĩa là một đối tượng đếm số lần tương tác thông qua một biến trạng thái iternal. Trong trường hợp này, biến KHÔNG được đặt thành 0 khi lần lặp đi qua mục cuối cùng, thay vào đó, StopIteration () được nâng lên để cho biết sự kết thúc của phép lặp. Điều này cũng có nghĩa là mục đã lặp sẽ được lặp lại một lần duy nhất, như trong ví dụ dưới đây -

my_list = ['itemOne', 'TutorialsPoints']
iterators_of_some_list = iter(my_list)
for i in iterators_of_some_list:
   print(i)
for j in iterators_of_some_list: # doesn't work
   print(j)
#However
for k in my_list:
   print(k)
for l in my_list: # it worked
   print(l)

Đầu ra

itemOne
TutorialsPoints
itemOne
TutorialsPoints
itemOne
TutorialsPoints

Đoạn mã trên giữ đúng vì phương thức iter () trên trình vòng lặp trả về chính nó (là để nhớ trạng thái hiện tại). Vì vậy, ở trên chúng ta có một kiểu triển khai vòng lặp tương tự như “for” để chấm dứt nó.