Tôi có thể trả về không trong python không?

Thông thường, khi đọc mã Python, bạn sẽ bắt gặp các hàm tiện ích sẽ trả về None. Mặc dù trong một số trường hợp, việc trả về None có vẻ tự nhiên, nhưng nên tránh việc này vì có thể dễ xảy ra lỗi

Hãy xem tại sao việc trả về Không dễ xảy ra lỗi

Giả sử bạn muốn viết một hàm thư viện đơn giản để chia hai số

Hàm trả về None khi mẫu số bằng 0. Điều này hợp lý vì kết quả không được xác định nên việc gửi None nghe có vẻ tự nhiên. Tuy nhiên người dùng hàm có thể sử dụng sai như hình bên dưới

Khi tử số là 0, hàm sẽ trả về 0, điều này được mong đợi nhưng hãy xem điều gì xảy ra trong câu lệnh if

Nó đang tìm kiếm một giá trị tương đương với False và sẽ thực thi không chính xác, cho người dùng biết rằng đầu vào của bạn không hợp lệ, điều này không đúng. Việc đánh giá phản hồi trong điều kiện if như thế này rất dễ xảy ra lỗi

Thay vào đó nên trả lại những gì?

Cách chính xác là ném một ngoại lệ vào chức năng thư viện như hình bên dưới

Bằng cách này, người gọi hàm chịu trách nhiệm xử lý các trường hợp sử dụng không hợp lệ bằng cách bắt ngoại lệ thay thế và thực hiện hành động thích hợp. Không có phỏng đoán hoặc bất kỳ giả định nào được đưa ra bởi người gọi và kết quả rõ ràng hơn

Các hàm thường in ra giá trị 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 ta đã gọi hàm print[] hai lần

Khi chúng ta gọi hàm None1, hàm print[] được gọi với hàm None3, sau đó chúng ta in kết quả của việc gọi hàm None1

Bởi vì hàm None5 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 None1 được gọi, chúng ta sẽ in các chuỗi None3 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 None1

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] 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

Để ngăn một hàm trả về None trong Python, hãy đảm bảo trả về một giá trị từ hàm. Tất cả các hàm không trả về giá trị rõ ràng đều trả về giá trị None trong Python

Chúng tôi đã không trả về một giá trị rõ ràng từ hàm, vì vậy nó hoàn toàn trả về None

Sử dụng câu lệnh if1 để trả về một giá trị từ hàm

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

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. if6] làm thay đổi đối tượng ban đầu tại chỗ và trả về None

Nếu hàm thay đổi đối tượng ban đầu, đừng gán kết quả của việc gọi nó cho một biến

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 None1 trong hàm None2 chỉ được chạy nếu đối số được truyền vào có độ dài lớn hơn None3

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, None5 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

Bạn có nên trả lại Không có trong Python không?

Thông thường, khi đọc mã Python, bạn sẽ bắt gặp các hàm tiện ích sẽ trả về Không có. Mặc dù việc trả về Không có trong một số trường hợp có vẻ là điều tự nhiên, nhưng nên tránh việc này vì có thể dễ xảy ra lỗi .

Là gì

Từ khóa Không có được sử dụng để xác định giá trị rỗng hoặc không có giá trị nào . Không có gì không giống như 0, Sai hoặc một chuỗi rỗng. Không có loại dữ liệu nào của riêng nó [NoneType] và chỉ có Không có thể là Không có.

Chủ Đề