Hàm print[] tích hợp sẵn của Python không trả về bất cứ thứ gì. Đây là sự thật mà có lẽ bạn chưa từng nghĩ đến trước đây
Bởi vì hàm print[] không trả về giá trị, nó sẽ trả về Không
Để thấy điều này, bạn có thể in kết quả của lệnh gọi print[]
print[print["Example"]]
đầu ra
None
Thay vì in “Ví dụ”, Không có gì được in là do bản thân print[“Ví dụ”] trả về Không có
Sự thật về Không có đối tượng nào trong Python
Dưới đây là một số thông tin về đối tượng Không có
def test[]: pass
4 không giống với Sai- Một chuỗi rỗng không giống như Không có
- Không có cũng không phải là một số không
- Mọi so sánh với Không trả về Sai, ngoại trừ so sánh Không với chính nó
Ở đây tôi đang sử dụng Python REPL để xác minh những
>>> None is False False >>> None == "" False >>> None == 0 False >>> None == "None" False >>> None == None True
Cách sử dụng và xử lý none trong Python
Trong Python, Không đại diện cho việc không có giá trị
Bạn thường sử dụng Không để
- Thực hiện so sánh để xem liệu một giá trị có phải là Không có hay không
- Cung cấp giá trị đối số mặc định trống cho hàm
Bạn cũng thường thấy NoneType trong các thông báo lỗi theo dõi
Điều này là do bạn có một giá trị Không mong muốn ở đâu đó trong mã và bạn cố gắng sử dụng nó
Không có trong so sánh
Không có gì thường thấy khi so sánh trong Python
Để so sánh một đối tượng với Không, hãy sử dụng toán tử định danh is [and is not]
Ví dụ
number = None name = "Alice" number is None # Returns True name is not None # Returns True
Nói chung, để kiểm tra xem một giá trị có phải là Không trong Python hay không, bạn có thể sử dụng câu lệnh if…else
Chẳng hạn, hãy kiểm tra xem một biến tên có phải là Không
name = None if name is None: print["None found"] else: print[name]
đầu ra
None found
Không có tham số mặc định
A Không có thể được cung cấp làm tham số mặc định cho hàm
Điều này có nghĩa là nếu bạn gọi hàm mà không chỉ định tham số Không được sử dụng làm dự phòng
Ví dụ: hãy tạo một hàm chỉ chào một người nếu một tên được đưa ra làm đối số
None found1
Chức năng này hoạt động sao cho
- Nếu một tên không được chỉ định, nó sẽ mặc định là Không có. Kết quả là, chức năng không làm gì cả
- Nếu một tên được chỉ định, hàm sẽ chào người có tên đó
Không làm tham số mặc định là cách phổ biến để sử dụng Không có trong Python
Nếu bạn xem tài liệu chính thức của Python, bạn sẽ thấy Không ai sử dụng cách này trong phương thức
def test[]: pass5 chẳng hạn
Tham số chính là Không theo mặc định
Gỡ lỗi NoneType trong Traceback
Khi viết mã Python, bạn thường vấp phải một lỗi như thế này
None found2
Nếu bạn thấy lỗi này hoặc bất kỳ lỗi nào khác với từ Không có Loại, điều đó có nghĩa là bạn đang sử dụng Không theo cách không thể sử dụng được
Nói cách khác, thứ không được cho là Không có lại vô tình là Không có
Chẳng hạn, hãy tạo một hàm trả về một danh sách các tên và gọi nó là
None found3
Thay vì in tên, xảy ra lỗi
None found4
Điều này xảy ra vì chúng ta quên trả lại tên trong hàm give_names[]
Như bạn đã biết trước đó, khi một hàm không sử dụng từ khóa trả về, hàm Không được trả về tự động
Do lỗi nhỏ này, chúng tôi cố gắng lặp lại đối tượng Không có
Trong trường hợp này, cách khắc phục rất đơn giản—trả lại tên từ hàm
None found5
Bây giờ chức năng hoạt động như chúng ta mong đợi
None found6
Đây là một ví dụ về cách theo dõi lỗi với NoneType
Bất cứ khi nào bạn thấy lỗi này, điều gì đó tương tự đang xảy ra
Không có đối tượng dưới mui xe trong Python
Trong nhiều ngôn ngữ lập trình phổ biến, null chỉ là 0 dưới mui xe
Trong Python, điều này không đúng
Cũng giống như mọi thứ khác trong Python, Không ai là một đối tượng
Điều này rất dễ xác minh bằng cách kiểm tra loại
def test[]: pass6 trong Python REPL
None found7
Loại Không có là Không có Loại. Điều này là do NoneType là lớp cơ sở triển khai đối tượng None
Trong Python, Không ai là một đối tượng đơn lẻ
Điều này có nghĩa là chỉ có một Không có trong Python theo ý của bạn
Bất kể bạn nhìn thấy Không ở đâu, nó luôn giống nhau Không có đối tượng nào
Hãy xác minh điều này bằng cách tạo nhiều biến với giá trị
def test[]: pass6 và kiểm tra giá trị của chúng.
None found8
đầu ra
None found9
Tất cả các biến trả về giống nhau
Điều này xác minh rằng chỉ có một Không có
Nói cách khác, các biến n1, n2 và n3 cũng là cùng một đối tượng vì chúng trỏ đến cùng một địa chỉ bộ nhớ
Không ai là một hằng số đúng trong Python
Hãy đi sâu hơn vào chi tiết của Không
Không ai là một đối tượng trong Python. Nhưng nó là một đối tượng đặc biệt mà bạn không thể sửa đổi
Hãy xem điều gì sẽ xảy ra nếu bạn cố gắng sửa đổi đối tượng Không có trong Python
def test[]: pass0
Ngoài ra, bạn không thể thêm thuộc tính vào đối tượng Không có
def test[]: pass1
Không thể sửa đổi đối tượng Không có, bởi vì nó là một hằng số thực sự trong Python
Như đã thảo luận trước đó, điều này có thể gây ra lỗi và lỗi trong mã của bạn. May mắn thay, thông báo lỗi đủ rõ ràng để cho bạn biết chuyện gì đang xảy ra