2012-05-11 43 views
16

Tôi tự hỏi nếu python có bất kỳ chức năng như php function rỗng (http://php.net/manual/en/function.empty.php) mà kiểm tra nếu biến đó là trống rỗng, với tiêu chí sauCách kiểm tra xem biến có trống không trong python?

"" (an empty string) 
0 (0 as an integer) 
0.0 (0 as a float) 
"0" (0 as a string) 
NULL 
FALSE 
array() (an empty array) 
+0

Tại sao bạn hỏi? –

Trả lời

18

Có, bool. Nó không giống y hệt - '0'True, nhưng None, False, [], 0, 0.0"" là tất cả False.

bool được sử dụng ngầm khi bạn đánh giá đối tượng trong điều kiện như câu lệnh if hoặc while, biểu thức điều kiện hoặc bằng toán tử logic.

Nếu bạn muốn để xử lý chuỗi có chứa số như PHP có, bạn có thể làm một cái gì đó như:

def empty(value): 
    try: 
     value = float(value) 
    except ValueError: 
     pass 
    return bool(value) 
4

Xem phần 5.1:

http://docs.python.org/library/stdtypes.html

Bất kỳ đối tượng có thể được kiểm tra giá trị thật, để sử dụng trong một nếu hoặc khi điều kiện hoặc làm toán hạng của các hoạt động Boolean dưới đây. Các giá trị sau đây được coi sai:

None

False

zero của bất kỳ loại số, ví dụ, 0, 0L, 0.0, 0j.

bất kỳ chuỗi trống nào, ví dụ: '', (), [].

bất kỳ ánh xạ trống nào, ví dụ: {}.

trường hợp các lớp do người dùng xác định, nếu lớp xác định phương thức __nonzero__() hoặc __len__(), khi phương thức đó trả về giá trị số nguyên hoặc giá trị bool False. [1]

Tất cả các giá trị khác được coi là đúng - vì vậy, các đối tượng thuộc nhiều loại luôn đúng.

Hoạt động và chức năng tích hợp có kết quả Boolean luôn trả về 0 hoặc False cho sai và 1 hoặc True cho đúng, trừ khi có quy định khác. (Ngoại lệ quan trọng: các thao tác Boolean orand luôn trả về một trong các toán hạng của chúng.)

+0

Điều này không hoàn toàn trả lời câu hỏi của mình, "Tôi tự hỏi nếu python có bất kỳ chức năng như chức năng trống rỗng php". Điều này nói với anh ta _what là "trống rỗng" _ nhưng không phải làm thế nào để tìm hiểu xem một đối tượng tùy ý có sản phẩm nào hay không. – agf

+0

Tôi cho rằng câu trả lời của tôi ngụ ý rằng có toàn bộ phần tài liệu giải thích * những gì là "trống" *. Tôi muốn nói giữa 3 câu trả lời cho câu hỏi này, chúng tôi đã cạn kiệt phần lớn các trường hợp sử dụng. – jgritty

16

Xem thêm câu trả lời trước này mà khuyến cáo từ khóa not

How to check if a list is empty in Python?

Nó khái quát không chỉ là danh sách:

>>> a = "" 
>>> not a 
True 

>>> a = [] 
>>> not a 
True 

>>> a = 0 
>>> not a 
True 

>>> a = 0.0 
>>> not a 
True 

>>> a = numpy.array([]) 
>>> not a 
True 

Đáng chú ý, nó sẽ không hoạt động cho "0" như một chuỗi bởi vì chuỗi trong thực tế có chứa một cái gì đó - một ký tự có chứa "0". Cho rằng bạn phải chuyển nó sang một int:

>>> a = "0" 
>>> not a 
False 

>>> a = '0' 
>>> not int(a) 
True 
+1

'not' không phải là một lệnh, mà là một từ khóa. Nó cũng không phải là một hàm do đó bạn không cần (và không nên sử dụng) dấu ngoặc đơn. 'không' cũng được chuyển đổi hoàn toàn thành một bool rồi đảo ngược; bạn không bao giờ muốn đảo ngược chỉ để có được một boolean. – agf

+0

Cảm ơn @agf. Sửa chữa nó trong bài viết. – kitchenette

1

Chỉ cần sử dụng not:

if not your_variable: 
    print("your_variable is empty") 

và cho 0 as string sử dụng của bạn:

if your_variable == "0": 
    print("your_variable is 0 (string)") 

kết hợp chúng:

if not your_variable or your_variable == "0": 
    print("your_variable is empty") 

Python là về sự đơn giản, vậy là câu trả lời này :)

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