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 raNế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
là
- Có một chức năng không trả về bất cứ thứ gì [trả về
None
ngầm] - Đặt rõ ràng một biến thành
None
- 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ì
- 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. None
3] 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 None
6 trong hàm None
7 chỉ được chạy nếu đối số được truyền vào có độ dài lớn hơn None
8
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]
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ề