0 và 1 là loại 'số' nhưng trong biểu thức Boolean, 0 chuyển thành
console.log[0 || false]; // output: false
00 và 1 chuyển thành console.log[0 || false]; // output: false
01. Vì một biểu thức Boolean chỉ có thể mang lại một giá trị Boolean, nên bất kỳ biểu thức nào không rõ ràng là ____101 hoặc ____100 đều được đánh giá theo mức độ trung thực và giả dốiSố không là số duy nhất đánh giá là sai. Tất cả các số khác 0 khác, bất kể hình thức hoặc biểu thức đánh giá là trung thực
console.log[42 || false]; // output: 42
Điều này cho chúng ta biết rằng 42 là trung thực, nếu không biểu thức sẽ mang lại,
console.log[0 || false]; // output: false
00. Biểu thức OR ngắn mạch trên toán hạng true/true đầu tiênconsole.log[0 || false]; // output: false
Vì 0 là sai nên toán hạng thứ hai được trả về. Điều này sẽ xuất hiện trong chủ đề toán tử logic, vì vậy hãy lập bảng ngay bây giờ mà không tốn quá nhiều năng lượng cho những gì tôi đã viết ở đây. Miễn là bạn có được ý tưởng chung, chúng ta sẽ ổn thôi
Đối với phần thứ hai của câu hỏi của bạn,
if [youHit === true]
sẽ không bao giờ mang lại
console.log[0 || false]; // output: false
01, vì toán tử so sánh kiểu dữ liệu nghiêm ngặt console.log[0 || false]; // output: false
1. Một hình thức so sánh lỏng lẻo [chuyển đổi loại] sẽ mang lại console.log[0 || false]; // output: false
01 nếu console.log[0 || false]; // output: false
3 khác khôngif [youHit == true]
Tuy nhiên, như chúng ta đã thấy trước đó, chúng ta không cần phải so sánh đúng hay sai, trừ khi chúng ta hoàn toàn nhấn mạnh vào cái này hay cái kia.
youHit = true;
if [youHit]{
// will be true, whether explicitly the primitive, or any truthy expression.
}
if [youHit === true]{
// will be true, but only if explicitly the primitive, nothing else.
}
Hy vọng rằng điều này không làm bạn bối rối nhiều hơn nó giúp ích. Theo dõi một số bài đọc về true và false trong chuyển đổi kiểu JavaScript và cách nó áp dụng cho các biểu thức logic và điều kiện
Hàm
console.log[0 || false]; // output: false
070 cho phép bạn đánh giá bất kỳ giá trị nào và trả lại cho bạn console.log[0 || false]; // output: false
08 hoặc console.log[0 || false]; // output: false
07,Ví dụ
Đánh giá một chuỗi và một số
print[bool["Xin chào"]]
print[bool[15]]
Ví dụ
Đánh giá hai biến
x = "Xin chào"
y = 15
in[bool[x]]
in[bool[y]]
Hầu hết các giá trị là đúng
Hầu hết mọi giá trị được đánh giá là
console.log[0 || false]; // output: false
08 nếu nó có một số loại nội dungBất kỳ chuỗi nào là
console.log[0 || false]; // output: false
08, ngoại trừ các chuỗi rỗngBất kỳ số nào là
console.log[0 || false]; // output: false
08, ngoại trừ console.log[0 || false]; // output: false
076Bất kỳ danh sách, bộ dữ liệu, bộ và từ điển nào đều là
console.log[0 || false]; // output: false
08, ngoại trừ những danh sách trốngVí dụ
Sau đây sẽ trả về True
bool["abc"]
bool[123]
bool[["apple", "cherry", "banana"]]> bool[0]
False
>>> bool[1]
True2 của Python hoạt động chủ yếu như người ta có thể mong đợi—
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3 là
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3, các bộ sưu tập trống là
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3 và
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True6,
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True7 và
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True8 đều là
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3. Có một số cảnh báo và vấn đề có thể phát sinh tùy thuộc vào mức độ thông minh mà một người cố gắng trở thành. Trong bài viết này, bạn sẽ tìm hiểu cú pháp cơ bản của hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2, các trường hợp sử dụng hàm này phổ biến, cách sử dụng nâng cao với các lớp và đối tượng tùy chỉnh cũng như một số vấn đề cần lưu ý
TL; DR –
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 chuyển đổi bất kỳ đối tượng nào thành giá trị
console.log[0 || false]; // output: false
72 hoặc # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3
console.log[0 || false]; // output: false
9Điểm nổi bật
- bool[] đánh giá tính trung thực của một đối tượng
- Mọi giá trị khác không được coi là True
- bool[] hoạt động với danh sách, ký tự, bộ dữ liệu, trình tạo, int, chuỗi, số float và thậm chí cả số phức
- bool[] sử dụng giá trị __len__ cho các đối tượng bộ sưu tập hoặc __bool__ cho các mục không thuộc bộ sưu tập
- bool[] sẽ dự phòng thuộc tính __len__ cho các đối tượng tùy chỉnh trong đó __bool__ không được triển khai
Cú pháp & Các trường hợp phổ biến
Hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python được sử dụng để chuyển đổi các giá trị thành
console.log[0 || false]; // output: false
72 hoặc # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3. Các giá trị trả về của
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 sau đó có thể được sử dụng, phần lớn là để thuận tiện, trong các câu lệnh có điều kiện để điều khiển luồng điều khiển của chương trình của bạn. Xem xét các ví dụ sau về hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 thể hiện việc đánh giá các loại đầu vào, giá trị và đối tượng khác nhau của nó
Số [int, float và phức tạp]
Bất kỳ ngôn ngữ lập trình máy tính nào tôi có kinh nghiệm đều sử dụng 0 và 1 để biểu thị Sai và Đúng tương ứng. Điều này được phản ánh trong Python bằng chứng là đánh giá của hàm ________ 72
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True
Hơn nữa, Python sẽ đánh giá bất kỳ đại diện nào của 0 là giá trị
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3
console.log[0 || false]; // output: false
7Điều quan trọng là Python, cùng với hầu hết các ngôn ngữ lập trình khác, 0 được hiểu là Sai và tất cả các giá trị khác không được đánh giá là Đúng. Đó là, 1, 42, 1010 và thậm chí các giá trị âm đánh giá bằng
console.log[0 || false]; // output: false
72. Hãy xem xét những điều sau đâyconsole.log[0 || false]; // output: false
0Dây
Lúc đầu, việc xác định tính trung thực của một chuỗi có thể hơi lạ. Điểm mấu chốt cần nhớ là hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python diễn giải
console.log[0 || false]; // output: false
03, cũng như các đối tượng có giá trị # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True6 cho thuộc tính
console.log[0 || false]; // output: false
05 là Sai. Một chuỗi là một tập hợp các ký tự và, với tư cách là một đối tượng Python, có một phương thức console.log[0 || false]; // output: false
06. Các chuỗi rỗng có giá trị console.log[0 || false]; // output: false
06 là # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True6, đó là lý do tại sao chúng đánh giá là
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3. Hãy xem xét những điều sau đây
console.log[0 || false]; // output: false
9Tất cả các chuỗi ở đây được đánh giá là
console.log[0 || false]; // output: false
72 ngoại trừ chuỗi trống [thứ 2 đến ví dụ cuối cùng] được mong đợi. Trong ví dụ trước, tôi đã sử dụng hàm console.log[0 || false]; // output: false
91 [một. k. a. hàm ác] để diễn giải chuỗi một biểu thức PythonThao tác này chuyển đổi chuỗi thành loại tích hợp sẵn và được đánh giá bởi
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 dưới dạng không phải chuỗi. Một chút sôi nổi, nhưng vẫn là một vấn đề khá chuẩn. Điều ít được mong đợi hơn là cách hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 xử lý các giá trị thập lục phân, bát phân và nhị phân. Hãy xem xét những điều sau đây
console.log[0 || false]; // output: false
4Python sử dụng các hàm tích hợp hex, oct và bin để chuyển đổi các giá trị số thành các dạng biểu diễn số khác nhau. Tuy nhiên, những giá trị này được lưu trữ dưới dạng biểu diễn chuỗi và do đó đánh giá thành giá trị trung thực thông qua hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2. Tuy nhiên, nếu các giá trị được chuyển đổi thành giá trị số mà chúng đại diện thì hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 sẽ đánh giá chúng tương ứng
Ghi chú. Mẫu mà chúng tôi thấy đang nổi lên ở đây là các giá trị chuỗi chỉ được đánh giá theo nghĩa đen sau khi chuyển đổi thành các biểu diễn không phải chuỗi
bộ sưu tập
Giá trị
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python có thể được sử dụng để đánh giá xem các bộ sưu tập có chứa bất kỳ mục nào không. Các bộ sưu tập rỗng đánh giá là Sai và tất cả các bộ sưu tập khác đánh giá là
console.log[0 || false]; // output: false
72. Khi được sử dụng để đánh giá một bộ sưu tập, hàm # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python tương đương với việc đưa ra câu lệnh “bộ sưu tập này chứa dữ liệu. ” Nếu có bất cứ thứ gì trong đó
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 trả về
console.log[0 || false]; // output: false
72. Điều này được củng cố bởi và giá trị trả về của phương thức console.log[0 || false]; // output: false
06. Hãy xem xét những điều sau đâyif [youHit == true]
3Hầu hết các ví dụ này đều được mong đợi, ngay cả các đánh giá vòng lặp cũng được thực hiện trong ví dụ cuối cùng. Tuy nhiên, trong ví dụ thứ 2 đến ví dụ cuối cùng, nơi một tập hợp các tập hợp rỗng được đánh giá, chúng ta thấy đường cong thực sự đầu tiên mà hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 cung cấp. Cụ thể, một bộ sưu tập chứa các bộ sưu tập trống được coi là không trống
Python đại diện cho tất cả dữ liệu dưới dạng đối tượng—bao gồm cả bộ sưu tập trống. Bộ sưu tập này có
console.log[0 || false]; // output: false
06 bằng 0 và không có thành viên nào nhưng vẫn tồn tại trong bộ nhớ dưới dạng đối tượng Python. Tham chiếu đến đối tượng này được coi là một giá trị khác 0 bởi # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python và do đó có giá trị là
console.log[0 || false]; // output: false
72. Bản thân các đối tượng vẫn sẽ đánh giá là # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3 [vì chúng không chứa bất kỳ tham chiếu nào] được hiển thị trong ví dụ cuối cùng ở trên. Kỳ lạ, nhưng không phải không có lời giải thích
Đối tượng & Lớp tùy chỉnh
Mọi thứ trong Python là một đối tượng lưu một vài hằng số. Mô hình dữ liệu của Python xác định tất cả các đối tượng có phương thức __len__ và __bool__. Mô tả phương thức __len__ như vậy
Được gọi để triển khai hàm tích hợp len[]. Nên trả về chiều dài của đối tượng, một số nguyên >= 0. Ngoài ra, một đối tượng không xác định phương thức __bool__[] và phương thức __len__[] của nó trả về 0 được coi là sai trong ngữ cảnh Boolean
Tôi đang trích dẫn từ phần
console.log[0 || false]; // output: false
05 của tài liệu mô hình dữ liệu vì nó bối cảnh hóa mối quan hệ giữa console.log[0 || false]; // output: false
05 và console.log[0 || false]; // output: false
49 một cách độc đáo. Không có cái này, Python sẽ rơi vào cái khác. Các phương thức này bọc các hàm có sẵn if [youHit == true]
30 và # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 để lấy các giá trị của một đối tượng. Đối với các bộ sưu tập, điều này sử dụng một lệnh gọi hiệu quả tới
if [youHit == true]
32. Kiểm tra mã nguồn cho đối tượng Danh sách của Python để hiểu rõ hơn về cách thức hoạt động của nó. Cảnh báo trước, đó là trong CHãy xem xét một số ví dụ về các đối tượng tùy chỉnh để chứng minh cách thức hoạt động của nó với mô hình dữ liệu của Python
youHit = true;
if [youHit]{
// will be true, whether explicitly the primitive, or any truthy expression.
}
if [youHit === true]{
// will be true, but only if explicitly the primitive, nothing else.
}
5Trong ví dụ này, tôi đã tạo một lớp tùy chỉnh lưu trữ đối tượng trình tạo
if [youHit == true]
33, if [youHit == true]
34, if [youHit == true]
35 hoặc if [youHit == true]
36 trong thuộc tính items. Sau đó, tôi đã tạo hai phiên bản của đối tượng tùy chỉnh này, một phiên bản có các mục và một phiên bản không cóKhi đánh giá tính trung thực của các đối tượng này, phương thức
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python cho biết cả hai đều là
console.log[0 || false]; // output: false
72. Điều này là do Python không biết rằng thuộc tính items là thứ cần được đánh giá. Có một số cách để cho Python biết đây là nơi nó nên xem xét liệu các phiên bản của chúng ta có chứa các mục hay không. Đây là một ví dụ khác mà tôi đã triển khai phương thức console.log[0 || false]; // output: false
06 tùy chỉnh# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3
Hãy cẩn thận
Phương thức
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 của Python hoạt động như mong đợi trong hầu hết các trường hợp. Các ví dụ sử dụng
console.log[0 || false]; // output: false
91 có thể hơi khó dự đoán—nhưng việc sử dụng console.log[0 || false]; // output: false
91 cũng vậy. Gọi # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 trên các phiên bản đối tượng tùy chỉnh cũng có thể phức tạp—nhưng đó không phải là lỗi của Python. Ngoại lệ duy nhất ở đây là hiểu nhầm cách mô hình dữ liệu của Python lấy được giá trị boolean. Hãy xem xét một ví dụ cuối cùng bằng cách sử dụng một lớp tùy chỉnh khác
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True8
Ở đây tôi đã triển khai phương thức
youHit = true;
if [youHit]{
// will be true, whether explicitly the primitive, or any truthy expression.
}
if [youHit === true]{
// will be true, but only if explicitly the primitive, nothing else.
}
54 của đối tượng CustomCollection khi trả về # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3 bất kể điều gì. Python sẽ chuyển giá trị của
console.log[0 || false]; // output: false
05 đến # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 khi đánh giá tính trung thực của các đối tượng khi và chỉ khi phương thức __bool__ không được triển khai. Trong trường hợp phương pháp
console.log[0 || false]; // output: false
49 tồn tại, nó sẽ trở lại giá trị đóTrong ví dụ trên, phương thức
console.log[0 || false]; // output: false
06 trả về số lượng đối tượng trong bộ sưu tập vật phẩm một cách hợp lý. Tuy nhiên, tôi đã triển khai console.log[0 || false]; // output: false
49 để trả về # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True3 bất kể quy mô bộ sưu tập của chúng tôi. Một số bản sửa lỗi rõ ràng bao gồm những điều sau đây
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True0
Cảnh báo trước được hiển thị ở đây thực sự là cảnh báo về cách triển khai các mô hình đối tượng tùy chỉnh của một người—chứ không phải cách hoạt động của hàm
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2. Điều rút ra là biết rằng
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 sẽ sử dụng giá trị của
console.log[0 || false]; // output: false
05 nếu không có phương thức console.log[0 || false]; // output: false
49 nào được triển khai. Làm điều gì đó hợp lý ở đó và bạn sẽ tránh được mọi vấn đềBool[] có thực sự quan trọng không?
Phương thức bool[] của Python cho phép một người dễ dàng gán giá trị Đúng hoặc Sai cho một biến có thể được sử dụng thuận tiện cho luồng điều khiển thông qua các câu lệnh có điều kiện. Trong thực tế, tôi hiếm khi thấy mình cần sử dụng chức năng này và được phục vụ bằng cách thêm các biểu thức một cách rõ ràng. Những lần duy nhất tôi thấy mình sử dụng nó là những lần tôi đang cố gắng cải thiện cú pháp của mình một chút, mặc dù thường phải trả giá bằng sự rõ ràng. Một ví dụ
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True1
Ở đây tôi đã sử dụng một lớp lót tận dụng các hàm bool và sum để so sánh một giá trị tổng hợp. Tôi đang kiểm tra xem việc nhân ngẫu nhiên
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True36 từ một
if [youHit == true]
33 có bao giờ cho kết quả là số 3 may mắn của tôi không. Có thể không nhưng đó là trường hợp sử dụng tốt nhất cho # Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True2 mà tôi có thể nhanh chóng nghĩ ra. Điều đó sẽ không thể diễn đạt rõ ràng hơn bằng cách sử dụng các hằng số
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True39,
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True80,
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True81,
# Bool evaluates to True for 0 # and False for 1. Standard-issue. >>> bool[0] False >>> bool[1] True82 hoặc một toán tử so sánh tiêu chuẩn. Đây có phải là một điều hợp lý để được làm?
Suy nghĩ cuối cùng
Ở đây chúng ta đã thấy những kiến thức cơ bản về bool[], một số cách sử dụng ít phổ biến hơn và thậm chí một số trường hợp cạnh. Hàm bool[] được sử dụng rất nhiều thông qua luồng dữ liệu nội bộ của Python. Tuy nhiên, tôi thấy rất ít trường hợp sử dụng để sử dụng nó một cách rõ ràng. Đôi khi nó hữu ích trong việc xử lý lượng lớn dữ liệu hoặc đánh giá các giá trị tổng hợp
Các hàm tích hợp sẵn của Python là một nhóm các công cụ mạnh mẽ có liên quan đến nhiều nền tảng của các tính năng cấp thấp hơn của ngôn ngữ. Tôi thấy rằng việc biết chức năng cơ bản của chúng giúp tối ưu hóa mã của tôi—ngay cả khi tôi không sử dụng các chức năng một cách rõ ràng