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

Có thể sử dụng trình tạo để tạo trình vòng lặp trong Python không?

, Chúng ta có thể tạo một trình tạo bằng cách sử dụng trình vòng lặp trong python Việc tạo trình vòng lặp rất dễ dàng, chúng ta có thể tạo trình tạo bằng cách sử dụng câu lệnh lợi nhuận từ khóa.

Trình tạo Python là một cách dễ dàng và đơn giản để tạo trình vòng lặp. và chủ yếu được sử dụng để khai báo một hàm hoạt động giống như một trình lặp.

Trình tạo là một hàm mà chúng ta có thể lặp lại một giá trị tại một thời điểm có thể là trong cuộc sống hàng ngày, mọi lập trình viên sẽ sử dụng các đối tượng có thể lặp lại như danh sách, chuỗi và Dict, v.v.

Trình lặp là một đối tượng có thể được lặp lại thông qua lặp.

Ví dụ sau cho thấy rằng Trình tạo giới thiệu câu lệnh Yield trong python nó hoạt động giống như trả về một giá trị.

Ví dụ

def generator():
   print("program working sucessfully")
   yield 'x'
   yield 'y'
   yield 'z'
generator()

Đầu ra

<generator object generator at 0x000000CF81D07390>

Bằng cách sử dụng vòng lặp for, chúng ta cũng có thể tạo một trình tạo

Ví dụ

for i in generator():
print(i)

Đầu ra

program working sucessfully
x
y
z


các đối tượng vòng lặp hỗ trợ hai phương pháp 1. __iter__method và 2. __next__method

Phương thức __iter__ trả về chính đối tượng trình vòng lặp. chủ yếu nó được sử dụng trong vòng lặp for và trong các câu lệnh.

Phương thức __next__ trả về giá trị tiếp theo từ trình vòng lặp nếu không có thêm mục nào trả về, nó sẽ tăng ngoại lệ StopIteration.

Ví dụ

Hàm lớp
class function(object):
   def __init__(self, lowtemp, hightemp):
      self.current = lowtemp
      self.high = hightemp
   def __iter__(self):
      'Returns itself as an iterator object'
      return self
   def __next__(self):
      'Returns the next value till current is lower than high'
      if self.current > self.high:
         raise StopIteration
      else:
         self.current += 1
         return self.current - 1
c = function(3,20)
for i in c:
print(i, end=' ')

Đầu ra

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20