Hàm Python trả về Không thay vì giá trị

Các hàm thường in None khi chúng ta chuyển kết quả của việc gọi một hàm không trả về bất kỳ thứ gì cho hàm print[]. Tất cả các hàm không trả về giá trị một cách rõ ràng, trả về None trong Python

Lưu ý rằng chúng tôi đã gọi hàm print[] hai lần

Khi chúng ta gọi hàm example[], hàm print[] được gọi với hàm

def return_multiple_values[]:
    return 1, 2, 3


print[return_multiple_values[]]
print[type[return_multiple_values[]]]
1, sau đó chúng ta in kết quả của việc gọi hàm example[]

Bởi vì hàm

def return_multiple_values[]:
    return 1, 2, 3


print[return_multiple_values[]]
print[type[return_multiple_values[]]]
3 không trả về bất cứ thứ gì, nên cuối cùng nó hoàn toàn trả về None, do đó, None được in ra

Nếu chúng ta trả về một giá trị từ hàm, giá trị đó sẽ được in ra

Chúng tôi đã sử dụng câu lệnh print[]1 để trả về một giá trị từ hàm

Bây giờ, khi hàm example[] được gọi, chúng ta sẽ in các chuỗi

def return_multiple_values[]:
    return 1, 2, 3


print[return_multiple_values[]]
print[type[return_multiple_values[]]]
1 và print[]4, thay vì None

Lưu ý rằng tất cả các hàm không trả về giá trị một cách rõ ràng, sẽ hoàn toàn trả về None

Nếu bạn không muốn trả lại bất cứ thứ gì từ hàm, hãy xóa lệnh gọi print[] khi gọi hàm example[]

Chẳng ích gì khi in kết quả của việc gọi một hàm không trả về bất kỳ thứ gì vì chúng ta sẽ luôn in ra None

Các nguồn phổ biến nhất của giá trị None

  1. Có một chức năng không trả về bất cứ thứ gì [trả về None ngầm]
  2. Đặt rõ ràng một biến thành None
  3. Gán một biến cho kết quả gọi hàm tích hợp không trả về bất kỳ thứ gì
  4. Có một chức năng chỉ trả về một giá trị nếu một điều kiện nhất định được đáp ứng

Lưu ý rằng có nhiều chức năng tích hợp sẵn [e. g. None3] làm thay đổi đối tượng ban đầu tại chỗ và trả về None

Một nguồn phổ biến khác của các giá trị None là có một hàm chỉ trả về một giá trị nếu một điều kiện được đáp ứng

Câu lệnh None6 trong hàm None7 chỉ được chạy nếu đối số được truyền vào có độ dài lớn hơn None8

Trong tất cả các trường hợp khác, hàm không trả về bất kỳ thứ gì và kết thúc hoàn toàn trả về None

Để giải quyết vấn đề này, chúng ta có thể trả về một giá trị mặc định nếu điều kiện không được đáp ứng, e. g. một chuỗi rỗng, một danh sách trống, print[]0 hoặc bất kỳ giá trị nào khác phù hợp với trường hợp sử dụng của bạn

Trả lại Không rõ ràng

Sử dụng câu lệnh return trong Python một cách hiệu quả
02. 53

Đánh dấu là đã hoàn thành

Vật liệu hỗ trợ

Các slide khóa học hướng dẫn được đề xuất [. pdf] Mã mẫu [. nén]

Trở thành Thành viên để tham gia cuộc trò chuyện

Không giống như các ngôn ngữ lập trình khác, hàm python không bị hạn chế trả về một loại giá trị duy nhất. Nếu bạn nhìn vào định nghĩa hàm, nó không có bất kỳ thông tin nào về những gì nó có thể trả về

Hãy xem một ví dụ trong đó hàm sẽ trả về nhiều loại giá trị

def get_demo_data[object_type]:
    if 'str' == object_type:
        return 'test'
    elif 'tuple' == object_type:
        return [1, 2, 3]
    elif 'list' == object_type:
        return [1, 2, 3]
    elif 'dict' == object_type:
        return {"1": 1, "2": 2, "3": 3}
    else:
        return None

Trả về nhiều giá trị trong một câu lệnh return

Chúng ta có thể trả về nhiều giá trị từ một câu lệnh return. Các giá trị này được phân tách bằng dấu phẩy và được trả về dưới dạng một bộ cho chương trình người gọi

def return_multiple_values[]:
    return 1, 2, 3


print[return_multiple_values[]]
print[type[return_multiple_values[]]]

đầu ra

[1, 2, 3]

Python trả về nhiều giá trị

Câu lệnh trả về Python với khối cuối cùng

Khi câu lệnh return được thực thi bên trong khối try-ngoại trừ, mã khối cuối cùng được thực thi trước khi trả lại giá trị cho người gọi

def hello[]:
    try:
        return 'hello try'
    finally:
        print['finally block']


def hello_new[]:
    try:
        raise TypeError
    except TypeError as te:
        return 'hello except'
    finally:
        print['finally block']


print[hello[]]
print[hello_new[]]

đầu ra

finally block
hello try
finally block
hello except

Nếu khối cuối cùng có câu lệnh trả về, thì câu lệnh trả về trước đó sẽ bị bỏ qua và giá trị từ khối cuối cùng được trả về

Tại sao hàm Python của tôi không trả về gì?

Hàm Python không có câu lệnh trả về . Nếu hàm không có bất kỳ câu lệnh trả về nào, thì hàm sẽ trả về Không có .

Điều gì xảy ra khi hàm không trả về giá trị?

Nếu không có câu lệnh trả về nào xuất hiện trong định nghĩa hàm, thì điều khiển sẽ tự động quay lại hàm gọi sau khi câu lệnh cuối cùng của hàm được gọi được thực thi . Trong trường hợp này, giá trị trả về của hàm được gọi là không xác định.

Hàm có thể không trả về gì không?

Các hàm trống được tạo và sử dụng giống như các hàm trả về giá trị ngoại trừ việc chúng không trả về giá trị sau khi thực thi hàm . Thay cho kiểu dữ liệu, hàm void sử dụng từ khóa "void. " Hàm void thực hiện một tác vụ và sau đó điều khiển trả về trình gọi--nhưng, nó không trả về giá trị.

Giá trị trả về không có trong Python là gì?

Trong Python, mọi hàm đều trả về một thứ gì đó. Nếu không có câu lệnh trả về nào , thì nó sẽ trả về Không có. Nếu câu lệnh trả về chứa một biểu thức, nó sẽ được đánh giá trước và sau đó giá trị được trả về. Câu lệnh return kết thúc việc thực thi hàm.

Chủ Đề