if <boolean> :
# do this
boolean phải là True hoặc False.Giá trị thực của một chuỗi trong python
thì tại sao
if "poi":
print "yes"
đầu ra: có
tôi đã không nhận lý do tại sao có là in ấn, vì "poi" là nether Đúng hay Sai.
if <boolean> :
# do this
boolean phải là True hoặc False.Giá trị thực của một chuỗi trong python
thì tại sao
if "poi":
print "yes"
đầu ra: có
tôi đã không nhận lý do tại sao có là in ấn, vì "poi" là nether Đúng hay Sai.
Python sẽ làm hết sức mình để đánh giá "truthiness" của một biểu thức khi một giá trị boolean là cần thiết từ biểu thức đó.
Quy tắc cho chuỗi là chuỗi rỗng được coi là False
, một chuỗi không trống được coi là True
. Quy tắc tương tự được áp dụng cho các vùng chứa khác, do đó, một từ điển hoặc danh sách trống được coi là False
, từ điển hoặc danh sách có một hoặc nhiều mục được coi là True
.
Đối tượng None
cũng được coi là sai.
Giá trị bằng số 0
được coi là sai (mặc dù giá trị chuỗi '0'
được coi là đúng).
Tất cả các biểu thức khác được coi là True
.
Chi tiết (bao gồm cách các loại do người dùng xác định có thể xác định sự thật) có thể tìm thấy tại đây: http://docs.python.org/release/2.5.2/lib/truth.html.
Trong python, bất kỳ chuỗi trừ một giá trị mặc định chuỗi rỗng để True
tức,
if "MyString":
# this will print foo
print("foo")
if "":
# this will NOT print foo
print("foo")
Điều này cũng đúng cho danh sách và các loại dữ liệu khác, phải không? – navyad
"mặc định là' True' "không thực sự chính xác. Làm thế nào về "đánh giá' True' trong một bối cảnh Boolean "? –
naveen yadav, vâng, nó là đúng cho tất cả các loại bộ sưu tập tích hợp sẵn. Các bộ sưu tập trống là các bộ sưu tập Sai, không trống là True. Chuỗi là một chuỗi, là một loại bộ sưu tập. – Hammerite
gì đang xảy ra ở đây là Python' bổ sung ngầm bool()
constructor sau if
, Bởi vì bất cứ điều gì tiếp theo if
nên được giải quyết là boolean.Trong bối cảnh này mã của bạn là tương đương với
if bool("poi"):
print "yes"
Theo Python bool(x)
constructor chấp nhận bất cứ điều gì và quyết định truthiness dựa trên dưới trường hợp
0
là False
mọi thứ khác là True
0.0
là False
mọi thứ khác là True`[]
là False
mọi thứ khác là True
{}
là False
mọi thứ khác là True
()
là False
mọi thứ khác là True
“"
là False
mọi thứ khác là True
. Hãy nhận biết rằng bool(“False”)
sẽ trở lại True
Đây là nhật ký cho các trường hợp tôi liệt kê ở trên
Python 3.4.3 (default, Feb 25 2015, 21:28:45)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(0.0)
False
>>> bool(0.02)
True
>>> bool(-0.10)
True
>>> bool([])
False
>>> bool([1,2])
True
>>> bool(())
False
>>> bool(("Hello","World"))
True
>>> bool({})
False
>>> bool({1,2,3})
True
>>> bool({1:"One", 2:"Two"})
True
>>> bool("")
False
>>> bool("Hello")
True
>>> bool("False")
True
+1 để liên kết tài liệu – Germano
Tôi tin rằng Python sẽ luôn kiểm tra __len __() của bất kỳ lớp nào có một và xem kết quả là 0 có nghĩa là đối tượng đánh giá thành 'false' trong ngữ cảnh boolean. Điều này là khá gần với cùng một điều như áp đặt cùng một quy tắc ngay cả trên các lớp do người dùng định nghĩa (bạn phải cố ý trả về một số giá trị không trực quan từ phương thức __len __() của bạn, hoặc bỏ nó ra hoàn toàn, để tránh quy tắc như được xây dựng). –
Đối với bất kỳ ai đọc câu trả lời ở trên: hãy đảm bảo rằng bạn thực sự đọc tài liệu (hoặc liên kết ở trên hoặc tại đây: http://docs.python.org/2/reference/datamodel.html#object.__nonzero__) –