2011-10-13 20 views
6

Tôi muốn biết nếu có cách viết mã mô-đun bên dưới mà không cần phải thêm một mức thụt lề khác toàn bộ mã mô-đun.Có thể kết thúc nhập khẩu mô-đun python với thứ gì đó giống như trả lại không?

# module code 
if not condition: 
    # rest of the module code (big) 

Tôi đang tìm kiếm một cái gì đó như thế này:

# module code 
if condition: 
    # here I need something like a `return` 
# rest of the module code (big) 

Lưu ý, tôi không muốn ném một ngoại lệ, việc nhập khẩu phải vượt qua bình thường.

+9

Tôi không biết giải pháp nào về điều đó, nhưng tôi đoán bạn có thể đặt tất cả mã của mình vào mô-đun nội bộ và nhập nếu điều kiện không được đáp ứng. – UncleZeiv

+0

@UncleZeiv: đó là một ý tưởng hay, bạn nên đăng nó như một câu trả lời! – SingleNegationElimination

+0

Điều gì với sự thù hận đối với thụt đầu dòng? –

Trả lời

5

Tôi không biết giải pháp nào về điều đó, nhưng tôi đoán bạn có thể đặt tất cả mã của bạn vào mô-đun nội bộ và nhập nếu điều kiện không được đáp ứng.

+0

Cảm ơn, nếu không ai đi kèm với một ý tưởng tốt hơn trong vài ngày, đây vẫn là câu trả lời đúng. – sorin

1

Tôi biết không có cách nào để thực hiện việc này. Điều duy nhất tôi có thể tưởng tượng rằng sẽ làm việc sẽ là return nhưng điều đó cần phải được bên trong một chức năng.

0

Thật khó để nói mà không biết mục tiêu cấp cao hơn của bạn là gì. (Ví dụ, điều kiện là gì? Tại sao nó lại quan trọng? Bạn có chắc chắn là bạn không gặp vấn đề XY ở đây không? Bạn không thể nói cho chúng tôi biết mục tiêu tổng thể của bạn là gì?) Nó cũng thực sự khó nói mà không biết làm thế nào các mô-đun sẽ được gọi. (Là một kịch bản từ dòng lệnh? Bằng cách được nhập bởi một mô-đun khác?) Và nó sẽ giúp rất nhiều để biết (a) lý do tại sao bạn đang cố gắng tránh thụt đầu dòng (WWII kết thúc, và chúng ta không cần phải phân phối không gian) Python là ngôn ngữ sử dụng thụt đầu dòng như là một tính năng tổng hợp, do đó, nói rằng "Tôi không thể sử dụng tính năng cú pháp này" tấn công nhiều người như một ràng buộc lạ. Nó giống như từ bỏ nếu-sau đó kiểm tra: về mặt lý thuyết bạn có thể làm việc xung quanh ràng buộc đó, có thể, đôi khi, nhưng tại sao bạn lại đi vào vòng boxing với hai tay bị trói sau lưng?), và (b) tại sao bạn không thể ném một ngoại lệ (không , thực sự: là bạn HOÀN TOÀN SURE bạn TUYỆT ĐỐI KHÔNG THỂ TẤT CẢ CÁC NGOẠI TRỪ TẤT CẢ?).

Vì vậy, tất cả những gì bạn đã thực hiện là hỏi "làm cách nào để thực hiện X, với điều kiện A, B và C?" câu hỏi, mà không chỉ ra lý do tại sao bạn muốn làm X, hoặc tại sao điều kiện A, B và C tồn tại, hoặc thậm chí cho dù bạn chắc chắn 100% chúng tồn tại và không thể làm việc xung quanh.

Nếu những gì bạn thực sự nói là "Tôi không muốn nhấn {TAB} 40 lần khi viết một hàm", thì vấn đề thực sự là bạn cần một trình soạn thảo văn bản tốt hơn. Nếu điều bạn thực sự nói là "Tôi tình cờ thấy sự thụt đầu về mặt thẩm mỹ là khó chịu về mặt thẩm mỹ," thì bạn nên suy nghĩ về (a) khía cạnh khác của lập luận là gì; đó là, tại sao mọi người sử dụng Python thụt đầu dòng như cú pháp để có ích; (b) cho dù sở thích thẩm mỹ của riêng bạn trong lĩnh vực này là quan trọng hơn những lý do bạn đã đưa ra trong (a); và (c) cho dù, với những điều này, Python là công cụ thích hợp cho cá nhân bạn sử dụng để thực hiện bất kỳ mục tiêu quy mô lớn nào của riêng bạn. (Nó không phải là không thích thụt đầu dòng như là một tính năng cú pháp, nhưng điều này là cơ bản đối với Python mà triết học phản đối nó đến một mức độ mà quy định nó ra là một dấu hiệu mạnh mẽ rằng có lẽ Python không phải là ngôn ngữ lý tưởng cho bạn để hoàn thành lập trình của bạn mục tiêu trong.) Nếu những gì bạn đang thực sự nói là bạn sẽ được hưởng lợi từ mã bao thanh toán cần phải được chạy dưới hai bộ hoàn cảnh khác nhau thành hai mô-đun, thì nó sẽ có lợi cho bạn để tái cấu trúc. Nếu những gì bạn đang nói là bạn đã có mã spaghetti mà hoàn toàn không thể tái cấu trúc, thì đó thực sự là vấn đề đầu tiên cần giải quyết, trước khi bạn cố gắng hủy bỏ nhập khẩu mô-đun.

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