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

Chính xác thì các hàm trong Python trả về / mang lại các đối tượng như thế nào?

Câu lệnh return khiến một hàm python thoát ra và trả lại giá trị cho trình gọi của nó. Mục đích của các hàm nói chung là nhận đầu vào và trả về một thứ gì đó. Một câu lệnh trả về, sau khi được thực thi, ngay lập tức chấm dứt việc thực thi một hàm, ngay cả khi nó không phải là câu lệnh cuối cùng trong hàm.

Các hàm trả về giá trị đôi khi được gọi là các hàm hiệu quả.

Ví dụ

Mã cho trước cho kết quả sau

def sum(a,b):
     return a+b
sum(5,16)

Đầu ra

21

Trình tạo

Trình tạo là trình vòng lặp hoặc tệp lặp như danh sách và bộ giá trị, nhưng bạn chỉ có thể lặp lại chúng một lần. Đó là bởi vì chúng không lưu trữ tất cả các giá trị trong bộ nhớ, chúng tạo ra các giá trị một cách nhanh chóng:

Ví dụ

mygenerator = (x*x for x in range(4))
for i in mygenerator:
      print i,

Đầu ra

0 1 4 9

Chúng tôi không thể thực hiện cho i trong mygenerator lần thứ hai vì trình tạo chỉ có thể được sử dụng một lần:chúng tính toán 0, sau đó quên nó đi và tính toán 1, 4 và kết thúc tính toán 9, từng cái một.

Lợi nhuận

output là một từ khóa được sử dụng giống như return, ngoại trừ hàm sẽ trả về một trình tạo.

Chúng tôi sử dụng mã sau để truy cập các kết quả trả về từ trình tạo như sau

Ví dụ

def createGenerator():
      for i in range(4):
           yield i*i      #  this code creates a generator
mygenerator = createGenerator()
print(mygenerator) # mygenerator is an object!
# for i in mygenerator:
#      print i,
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))

Đầu ra

<generator object createGenerator at 0xb71e27fc>
0
1
4
9
Traceback (most recent call last):
  File "yieldgen1.py", line 12, in <module>
    print(next(mygenerator))
StopIteration

Giải thích

Câu lệnh lợi nhuận trong ví dụ trên đã tạo mygenerator. Nó chỉ có thể được sử dụng một lần. Chúng ta sử dụng lệnh next (mygenerator) để tính toán; nó có thể được sử dụng một lần:lần đầu tiên nó tính toán 0, sau đó quên nó đi và sau đó lần thứ hai nó tính toán 1, lần thứ ba 4 và lần thứ tư nó tính toán 9, sau đó ở lần thứ năm nó xuất hiện lỗi StopIteration vì các phần tử danh sách đã hết.