2014-11-03 16 views
6

Điều nào sau đây là cách thích hợp để trở lại một cái gì đó với Python khi sử dụng điều kiện? Nó có quan trọng không? Và tại sao?Tuyên bố trả về điều kiện Python nào là đa số nhất?

# OPTION 1 
if conditional: 
    return a 
else: 
    return b 


# OPTION 2 
if conditional: 
    return a 
return b 
+0

các khác là không cần thiết –

+1

Im không chắc chắn bạn hiểu phương tiện gì đúng cú pháp .. hoặc giáo viên của bạn có thể không –

+0

Về mặt kỹ thuật họ đều cú pháp hợp lệ. – IanAuld

Trả lời

12

Các thích Python cách sẽ là:

return conditional 

"Simple is better than complex" nhớ? :)


Về câu hỏi đã chỉnh sửa của bạn, tôi sẽ sử dụng # OPTION 2"Flat is better than nested." và giải pháp này tiết kiệm một mức độ thụt đầu dòng. Bạn sẽ đánh giá cao điều này khi:

return b 

thực sự là một cái gì đó như:

return very_long_and_unwieldy_name_that_you_cannot_change 

Bên cạnh đó, else: trong trường hợp này là không cần thiết (cả cú pháp cũng như thị giác) và dự phòng; nó đơn giản lãng phí không gian.

Điều đó nói rằng, bạn có thể muốn xem xét việc sử dụng một conditional expression thay vì:

return a if conditional else b 

Đây là một lựa chọn rất ngắn gọn và thanh lịch khi a, conditional, và b đều tốt đẹp và ngắn.

+2

+10000000000000 nếu tôi có thể ... đây là một mẫu khủng khiếp (trong OP) mà tôi thấy mọi lúc –

+3

Nếu 'điều kiện' không mang lại giá trị Boolean nghiêm ngặt và bạn muốn điều đó, thì' return bool (có điều kiện) ' – kindall

+0

Giả sử rằng 'điều kiện' là một biểu thức boolean. Nếu đó là một biểu thức trả về một giá trị không boolean sẽ được hiểu là boolean, thì việc xây dựng của OP (một trong hai) là cần thiết. –

0

Tôi nghĩ rằng đây có thể là một câu hỏi trick. Người đầu tiên là không đúng cú pháp:

if conditional: 
    return True 
else 
    return False 

Trong Python, một else khoản, giống như bất cứ điều gì khác mà giới thiệu một bộ, phải kết thúc bằng một nhân vật :.

Nếu bạn khắc phục điều đó, sau đó họ đang cả hai cú pháp hợp lệ, và cả ngữ nghĩa có ý nghĩa. Trong thực tế, họ có nghĩa là cùng một điều. Chúng thậm chí sẽ biên dịch gần như cùng một mã, ngoại trừ việc mã đầu tiên có thể khiến Python tạo ra một số mã bổ sung cho trường hợp thứ ba "rơi khỏi cuối của hàm" mà không bao giờ được gọi.

Nhưng, như iCodez's answer giải thích, cả hai trong số này là một mô hình chống; chỉ cần return conditional hoặc return bool(conditional), nếu phù hợp.

Lưu ý rằng ngay cả trong trường hợp đánh giá conditional làm tăng ngoại lệ, các khả năng khác nhau là vẫn là tất cả tương đương (tối đa nội dung của truy nguyên) - tất cả sẽ chỉ tăng ngoại lệ đó.

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