2013-05-24 36 views
85

Tôi là một chút nhầm lẫn về cách/tại sao rất nhiều nhà phát triển python sử dụng if not trong báo cáo có điều kiện của họ.Python 'Nếu không' cú pháp

ví dụ, cho phép nói chúng tôi đã có một chức năng,

def foo(bar = None): 
    if not bar: 
     bar = 2 

Nhưng tại sao đi về theo cách này? Ý tôi là, sẽ không làm if bar != None hoặc if bar is not None rõ ràng hơn? if not cố gắng nói gì?

+1

Câu hỏi này đã được hỏi trước khi xem tại đây: http://stackoverflow.com/questions/100732/why-is-if-not-someobj-better-than-if-someobj-none-in-python – jlars62

+3

Vì 'nếu không' kiểm tra sự thật và '! =' kiểm tra tính bình đẳng. – ecline6

Trả lời

106

Có, if bar is not None rõ ràng hơn, và do đó tốt hơn, giả sử nó thực sự là những gì bạn muốn. Không phải luôn luôn như vậy, có những khác biệt tinh tế: if not bar: sẽ thực thi nếu bar là bất kỳ loại nào bằng không hoặc thùng chứa trống hoặc False. Nhiều người sử dụng not bar nơi họ thực sự làm có nghĩa là bar is not None.

+0

Vì vậy, nếu thanh là '[]', thì nó sẽ thực thi? –

+1

@EdgarAroutiounian Có. Bộ hoặc bộ trống, bộ tuples, từ điển, chuỗi, v.v. – delnan