2016-03-05 19 views
5

Tôi đang trả lại 0 tất cả các địa điểm trong một tập lệnh python nhưng muốn một cái gì đó ngữ nghĩa hơn, một cái gì đó dễ đọc hơn. Tôi không thích số ma thuật đó. Có ý tưởng nào trong python tương tự như cách trong C bạn có thể trả về EXIT_SUCCESS thay vì chỉ 0 không?Liệu python có một hằng số EXIT_SUCCESS?

tôi đã không thể tìm thấy nó ở đây: https://docs.python.org/3.5/library/errno.html

+0

Đơn giản chỉ cần 'return'. –

+0

Tại sao bạn cần một cái gì đó? Nếu chức năng của bạn không thành công, * tăng lỗi * – jonrsharpe

+0

Sử dụng câu lệnh' return' sẽ trả về 'Không ', và ngụ ý rằng bạn định sử dụng giá trị' None' đã trả về. Bỏ qua câu lệnh 'return' hoàn toàn sẽ vẫn trả về' None', nhưng chỉ nên được sử dụng nếu bạn không định sử dụng giá trị 'None' đã trả về. – gtlambert

Trả lời

5

Tôi đang trở về 0

return không phải là cách bạn thiết lập mã thoát tập lệnh của bạn bằng Python. Nếu bạn muốn thoát với mã thoát là 0, chỉ cần để kịch bản của bạn hoàn thành bình thường. Mã thoát sẽ tự động được đặt thành 0. Nếu bạn muốn thoát bằng mã thoát khác, sys.exit là công cụ để sử dụng.

Nếu bạn đang sử dụng giá trị trả về là 0 hoặc 1 trong mã của mình để cho biết chức năng có thành công hay không thành công, đây là một ý tưởng tồi. Bạn nên đưa ra một ngoại lệ thích hợp nếu xảy ra sự cố.

0

Vì bạn thảo luận return ở đây, có vẻ như bạn đang lập trình Python như C. Hầu hết các hàm Python lý tưởng nên được viết để tăng ngoại lệ nếu chúng không thành công và mã gọi có thể xác định cách xử lý các điều kiện đặc biệt. Đối với các hàm xác thực, có thể tốt nhất là trả lại True hoặc False - không phải là các chữ thường, nhưng do kết quả của một số biểu thức như s.isdigit().

Khi nói về giá trị trả về của quy trình trong môi trường, bạn sử dụng caonnt return vì mô-đun không phải là chức năng, do đó, câu lệnh return ở cấp cao nhất sẽ bị gắn cờ là lỗi cú pháp. Thay vào đó, bạn nên sử dụng sys.exit.

Python có vẻ hơi tối giản theo khía cạnh này, nhưng gọi đến sys.exit mà không có đối số mặc định thành công (tức là mã trả về bằng 0). Vì vậy, cách dễ nhất để đơn giản hóa chương trình của bạn có thể là dừng mã hóa nó với một đối số mà bạn không muốn chỉ ra lỗi!

Khi the documentation nhắc nhở chúng tôi, đối số nguyên được truyền lại và đối số chuỗi dẫn đến mã trả về là 1 và chuỗi được in thành stderr.

Ngôn ngữ không theo bất kỳ hằng số nào (trong khi nó có các tính năng dành riêng cho một số môi trường, nếu nó cung cấp mã thoát, giá trị của chúng có thể cần phải được triển khai hoặc nền tảng cụ thể và các nhà phát triển ngôn ngữ muốn tránh điều này khi có thể:

Các vấn đề liên quan