Return VS Yield trong Python — Truyện tranh ngắn

May 05 2023
# Tại sao 'yield' có thể làm cho mã Python của bạn nhanh hơn
Và vấn đề này trở nên tồi tệ hơn khi chúng tôi xử lý nhiều dữ liệu hơn. Nếu có 1000 người xếp hàng thì sao? Từ khóa 'return' Từ khóa 'lợi nhuận' Giống như từ khóa trả về, từ khóa lợi nhuận biểu thị kết quả đầu ra của một hàm.

Và vấn đề này trở nên tồi tệ hơn khi chúng tôi xử lý nhiều dữ liệu hơn. Nếu có 1000 người xếp hàng thì sao?

Từ khóa 'trở về'

def add10(x):
  return x

x = add10(4)        # x = 14
def get_takoballs(orders):
  output = []
  for order in orders:
    output.append(f'{order} takoballs')
  return output

y = get_takoballs([4,6,8])
# y = ['4 takoballs', '6 takoballs', '8 takoballs']

Từ khóa 'năng suất'

Giống như returntừ khóa, yieldtừ khóa biểu thị đầu ra của hàm.

Tuy nhiên, không giống như returntừ khóa, một hàm có thể có yieldnhiều đầu ra. Từ yieldkhóa không dừng toàn bộ chức năng sau khi chạy.

def testfunction():
  yield 4
  yield 5
  yield 6

for n in testfunction():
  print(n)

# 4
# 5
# 6
def get_takoballs(orders):
  for order in orders:
    yield f'{order} takoballs'

for food in get_takoballs([4, 6, 8]):
  print(food)

# 4 takoballs
# 6 takoballs
# 8 takoballs

Giả sử chúng ta có 10000 khách hàng trong quầy tako (thay vì chỉ 3).

orders = # a list containing 10000 orders

def return_stall(orders):
  # process all 10000 orders first
  # then output all 10000 processed orders
  output = []
  for order in order:
    output.append(f'{order} takoballs')
  return output

def yield_stall(orders):
  # process 1 order, then output it
  # repeat til all 10000 orders are completed
  for order in orders:
    yield f'{order takoballs}'

Đối với yield_stallchức năng này, mỗi đơn đặt hàng được đưa ra (được trao cho khách hàng) ngay sau khi chúng được xử lý. Thằng thứ nhất chỉ cần chờ lệnh của nó và duy nhất của nó là xong.

Phần kết luận

Nếu bạn đang xử lý một lượng dữ liệu lớn, hãy cân nhắc sử dụng hàm tạo (hàm sử dụng yield) để tăng tốc mọi thứ. Hy vọng điều này là rõ ràng và hữu ích!

Vài lời cuối cùng

Nếu câu chuyện này cung cấp giá trị và bạn muốn thể hiện một chút hỗ trợ, bạn có thể:

  1. Vỗ tay 50 lần cho câu chuyện này (điều này thực sự, thực sự giúp ích cho tôi)
  2. Đăng ký thành viên Phương tiện bằng liên kết của tôi ($5/tháng để đọc các câu chuyện trên Phương tiện không giới hạn)

Tăng cấp mã hóa

Cảm ơn vì đã là một phần của cộng đồng của chúng tôi! Trước khi bạn đi:

  • Vỗ tay cho truyện và theo dõi tác giả
  • Xem thêm nội dung trong ấn phẩm Level Up Coding
  • Khóa học phỏng vấn mã hóa miễn phí ⇒ Xem khóa học
  • Theo dõi chúng tôi: Twitter | LinkedIn | bản tin