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

Từ khóa "lợi nhuận" làm gì trong Python?

Từ khóa lợi nhuận được sử dụng trong trình tạo. Để hiểu hành vi của nó, trước tiên chúng ta hãy xem các mục lặp là gì. Danh sách đối tượng Python, tệp, chuỗi, v.v. được gọi là các tệp lặp. Bất kỳ đối tượng nào có thể được duyệt qua bằng cú pháp for .. in đều có thể lặp lại. Đối tượng Iterator cũng là một đối tượng có thể lặp lại, nhưng nó chỉ có thể được lặp lại một lần. Đối tượng Iterator có thể được lấy ở dạng bất kỳ có thể lặp lại nào bằng cách sử dụng hàm iter () và nó có phương thức next () bằng cách sử dụng quá trình lặp đó.

>>> L1 = [1,2,3,4]
>>> I1 = iter(L1)
>>> while True:
   try:
      print (next(I1))
   except StopIteration:
sys.exit()

Trình tạo xuất hiện tương tự như một hàm, nhưng nó tạo ra các mục liên tiếp trong trình lặp bằng từ khóa lợi nhuận.

Khi một hàm của trình tạo được gọi, nó sẽ trả về một đối tượng trình vòng lặp mà thậm chí không bắt đầu thực hiện hàm. Khi phương thức next () được gọi lần đầu tiên, hàm sẽ bắt đầu thực thi cho đến khi nó đạt đến câu lệnh lợi nhuận, câu lệnh này sẽ trả về giá trị được tạo ra. Lợi nhuận tiếp tục theo dõi, tức là ghi nhớ lần thực thi cuối cùng và lần gọi tiếp theo () thứ hai tiếp tục từ giá trị trước đó.

Ví dụ sau tạo một trình lặp có chứa các số trong chuỗi Fibonacci. Mỗi lệnh gọi đến hàm trình tạo fibo () mang lại phần tử liên tiếp trong chuỗi Fibonacci.

import sys
def fibo(n):
   a,b=0,1
   while True:
      if a>n : return
      yield a
      a, b = b, a+b
f = fibo(20)
while True:
   try:
      print (next(f))
   except StopIteration:
      sys.exit()