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

Khi nào sử dụng lợi nhuận thay vì trả lại trong Python?

Nói tóm lại, bất cứ khi nào điều khiển đến câu lệnh return trong chương trình của bạn, việc thực thi chương trình sẽ bị chấm dứt và các câu lệnh còn lại sẽ không được thực thi.

Tuy nhiên, trong trường hợp lợi nhuận, bất cứ khi nào quyền kiểm soát đạt đến câu lệnh lợi nhuận trong chương trình của bạn, việc thực thi chương trình của bạn sẽ bị tạm dừng và sau đó chúng tôi có thể tiếp tục các câu lệnh khác trong chức năng.

Hãy hiểu chi tiết cả hai câu lệnh.

Lợi nhuận

Sử dụng câu lệnh lợi nhuận trong một hàm làm cho hàm trở thành một hàm tạo có thể được sử dụng trong một vòng lặp. Khi hàm đang chạy và câu lệnh lợi nhuận được giải thích, giá trị sau năng suất được chuyển trở lại vòng lặp đã gọi nó. Lần lặp lại tiếp theo của vòng lặp, hàm sẽ bắt đầu ngay sau các câu lệnh lợi nhuận.

def func():
   yield 1
   yield 2
   yield 3

for num in func():
   print(num * num)

đầu ra

1
4
9

Trong chương trình trên, vòng lặp gọi hàm sẽ hoàn thành khi hàm func hoàn thành - đáp ứng phần cuối của hàm (func ()) hoặc câu lệnh trả về.

Tuy nhiên, bất kỳ vòng lặp mới nào sử dụng cùng một chức năng của trình tạo sẽ thực thi chức năng từ đầu lại.

Quay lại

Một câu lệnh trả lại,

  • Được sử dụng để dừng việc thực thi một hàm và tùy chọn trả về một giá trị cho trình gọi. Không thể sử dụng một hàm có trả về (nhưng không phải là lợi nhuận) trong một vòng lặp (không giống như lợi nhuận ở trên).

  • Nếu một hàm đã được thực thi trước đó được gọi lại, thì hàm sẽ bắt đầu thực thi từ đầu (không giống như kết quả ở trên).

Khi nào sử dụng lợi tức hoặc lợi nhuận?

Tuy nhiên, chúng tôi khuyên bạn nên sử dụng lợi nhuận khi chúng ta muốn lặp lại một chuỗi vì các hạn chế về tài nguyên hoặc đơn giản là không muốn lưu trữ toàn bộ chuỗi trong bộ nhớ. Đối với các trường hợp khác, chúng ta có thể nghĩ đến việc sử dụng câu lệnh trả về.

Hãy xem một chương trình khác sử dụng câu lệnh lợi nhuận để tạo bình phương số nguyên.

def Square():
   i = 1;
   # An Infinite loop to generate squares
   while True:
      yield i*i
      i += 1 # Next execution resumes from this point
for num in Square():
   if num > 100:
      break
   print(num)

đầu ra

1
4
9
16
25
36
49
64
81
100

Câu lệnh lợi nhuận thường không được sử dụng trong mệnh đề try của try…. cuối cùng chặn vì không có gì đảm bảo rằng trình tạo sẽ được tiếp tục lại, do đó không có gì đảm bảo rằng khối cuối cùng sẽ được thực thi.