Hướng dẫn check not none in python - không kiểm tra không có gì trong python

870

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Trong số này không phải là không có bài kiểm tra.

if val != None:

if not (val is None):

if val is not None:

Cái nào thích hợp hơn, và tại sao?

Hướng dẫn check not none in python - không kiểm tra không có gì trong python

LOSPEJOS

1.9683 huy hiệu vàng19 Huy hiệu bạc33 Huy hiệu đồng3 gold badges19 silver badges33 bronze badges

Hỏi ngày 19 tháng 10 năm 2010 lúc 3:20Oct 19, 2010 at 3:20

Prosseekprosseeekprosseek

Phim thương hiệu vàng 174K200200 gold badges552 silver badges850 bronze badges

2

if val is not None:
    # ...

là thành ngữ pythonic để kiểm tra rằng một biến không được đặt thành None. Thành ngữ này có cách sử dụng đặc biệt trong trường hợp khai báo các chức năng từ khóa với các tham số mặc định. is Kiểm tra danh tính trong Python. Bởi vì có một và chỉ một phiên bản của None có trong tập lệnh/chương trình Python đang chạy, is là bài kiểm tra tối ưu cho việc này. Như Johnsyweb chỉ ra, điều này được thảo luận trong PEP 8 theo "Khuyến nghị lập trình".

Về lý do tại sao điều này được ưu tiên hơn

if not (val is None):
    # ...

Đây chỉ đơn giản là một phần của Zen of Python: "Khả năng đọc." Python tốt thường gần với mã giả tốt.

Đã trả lời ngày 19 tháng 10 năm 2010 lúc 3:24Oct 19, 2010 at 3:24

10

Từ, Khuyến nghị lập trình, PEP 8:

So sánh với những người độc thân như không nên luôn luôn được thực hiện với is hoặc is not, không bao giờ là người vận hành bình đẳng.

Ngoài ra, hãy cẩn thận khi viết ____10 khi bạn thực sự có nghĩa là

if val is not None:
    # ...
1 - ví dụ: Khi kiểm tra xem một biến hoặc đối số mặc định là không có được đặt ở một số giá trị khác. Giá trị khác có thể có một loại (chẳng hạn như một thùng chứa) có thể sai trong bối cảnh boolean!

PEP 8 là cách đọc cần thiết cho bất kỳ lập trình viên Python nào.

Đã trả lời ngày 19 tháng 10 năm 2010 lúc 3:35Oct 19, 2010 at 3:35

Hướng dẫn check not none in python - không kiểm tra không có gì trong python

Johnsywebjohnsywebjohnsyweb

Huy hiệu vàng 132K2323 gold badges178 silver badges242 bronze badges

0

Đặt cược tốt nhất với các loại câu hỏi này là xem chính xác những gì Python làm. Mô -đun

if val is not None:
    # ...
2 là vô cùng thông tin:

>>> import dis
>>> dis.dis("val != None")
  1           0 LOAD_NAME                0 (val)
              2 LOAD_CONST               0 (None)
              4 COMPARE_OP               3 (!=)
              6 RETURN_VALUE
>>> dis.dis("not (val is None)")
  1           0 LOAD_NAME                0 (val)
              2 LOAD_CONST               0 (None)
              4 COMPARE_OP               9 (is not)
              6 RETURN_VALUE
>>> dis.dis("val is not None")
  1           0 LOAD_NAME                0 (val)
              2 LOAD_CONST               0 (None)
              4 COMPARE_OP               9 (is not)
              6 RETURN_VALUE

Lưu ý rằng hai trường hợp cuối cùng giảm xuống cùng một chuỗi hoạt động, Python đọc

if val is not None:
    # ...
3 và sử dụng toán tử is not. Đầu tiên sử dụng toán tử
if val is not None:
    # ...
5 khi so sánh với None.

Như đã chỉ ra bởi các câu trả lời khác, sử dụng

if val is not None:
    # ...
5 khi so sánh với None là một ý tưởng tồi.

Đã trả lời ngày 20 tháng 10 năm 2013 lúc 19:44Oct 20, 2013 at 19:44

SheetJSsheetjsSheetJS

21.8K12 Huy hiệu vàng63 Huy hiệu bạc75 Huy hiệu đồng12 gold badges63 silver badges75 bronze badges

2

Một trong hai phần sau, vì

if val is not None:
    # ...
9 có khả năng có thể thuộc loại xác định
if not (val is None):
    # ...
0 để trả về true khi được thông qua None.

Đã trả lời ngày 19 tháng 10 năm 2010 lúc 3:23Oct 19, 2010 at 3:23

1

Làm thế nào để bạn kiểm tra không phải là không có trong Python?

Sử dụng toán tử IS không để kiểm tra xem một biến không phải là không có trong Python, ví dụ:Nếu my_var không phải là không:.Toán tử không trả về đúng nếu các giá trị ở bên trái và bên phải không trỏ đến cùng một đối tượng (cùng một vị trí trong bộ nhớ). to check if a variable is not None in Python, e.g. if my_var is not None: . The is not operator returns True if the values on the left-hand and right-hand sides don't point to the same object (same location in memory).

Tại sao không có và không == Không?

Không có đối tượng Singleton (chỉ có tồn tại một đối tượng). Họ kiểm tra xem đối tượng có phải là cùng một đối tượng không, trong khi == chỉ kiểm tra xem chúng có tương đương không.Nhưng vì chỉ có một không, chúng sẽ luôn giống nhau, và sẽ trả về đúng. is checks to see if the object is the same object, while == just checks if they are equivalent. But since there is only one None , they will always be the same, and is will return True.

Không có gì so với không ở Python?

Sử dụng không phải là nếu bạn đang kiểm tra danh tính với đối tượng không.Sử dụng không giá trị nếu bạn chỉ muốn giá trị là sai.. Use not value if you just want the value to be False.

Không trống trong Python?

Sử dụng hàm Len () để kiểm tra một chuỗi trống trong Python, sử dụng hàm Len ();Nếu nó trả về 0, điều đó có nghĩa là chuỗi trống;Nếu không, nó không phải là.Vì vậy, nếu chuỗi có một cái gì đó, nó sẽ được tính là một chuỗi không trống;Nếu không, nó là một chuỗi trống.use the len() function; if it returns 0, that means the string is empty; otherwise, it is not. So, if the string has something, it will count as a non-empty string; otherwise, it is an empty string.