Không có gì đúng trong Python?

Trong Python 2, True, FalseNone là các hằng số tích hợp sẵn. Điều đó có nghĩa là có thể gán lại chúng

Trăn 2. x2. 0

True, False = False, True
True   # False
False  # True

Bạn không thể làm điều này với None kể từ Python 2. 4

Trăn 2. x2. 4

None = None  # SyntaxError: cannot assign to None

Trong Python 3, True, FalseNone hiện là từ khóa

Trăn 3. x3. 0

True, False = False, True  # SyntaxError: can't assign to keyword

None = None  # SyntaxError: can't assign to keyword

Khi bạn thực hiện if val is None, bạn gọi cho tổng đài viên

val = Noneif not val
if val is None
0 để kiểm tra danh tính của
val = Noneif not val
if val is None
1. Tôi. e,
val = Noneif not val
if val is None
2 Ở đây, toán tử kiểm tra xem cả hai toán hạng có tham chiếu đến cùng một đối tượng hay không

val = Noneif not val
if val is None
3 là một singleton trong Python và tất cả các giá trị
val = Noneif not val
if val is None
3 cũng giống hệt nhau

Nhưng…

khi bạn nói if val, trăn sẽ cư xử khác đi. nếu mong đợi một boolean, và giả sử

val = Noneif not val
if val is None
6 không phải là một boolean, Python sẽ tự động gọi phương thức
val = Noneif not val
if val is None
8 của
val = Noneif not val
if val is None
6

if val thực sự được thực hiện như

val = []if not val
if val is not None
0

Điều khó hiểu là,

val = []if not val
if val is not None
1 trả về
val = []if not val
if val is not None
2, vì vậy nếu
val = Noneif not val
if val is None
6 là Không có. Điều này hoạt động như mong đợi nhưng có những giá trị khác được đánh giá là
val = []if not val
if val is not None
4

Ví dụ quan trọng nhất là danh sách trống.

val = []if not val
if val is not None
5 cũng trả về
val = []if not val
if val is not None
2. Thông thường, một danh sách trống có ý nghĩa khác với ______11_______7; . Về mặt ngữ nghĩa, chúng khác nhau

Nếu bạn có kinh nghiệm với các ngôn ngữ lập trình khác, như C hoặc Java, thì có lẽ bạn đã nghe nói về khái niệm

>>> print(print("Hello, World!"))
Hello, World!
None
4. Nhiều ngôn ngữ sử dụng điều này để biểu thị một con trỏ không trỏ đến bất cứ thứ gì, để biểu thị khi một biến trống hoặc để đánh dấu các tham số mặc định mà bạn chưa cung cấp.
>>> print(print("Hello, World!"))
Hello, World!
None
4 thường được định nghĩa là
>>> print(print("Hello, World!"))
Hello, World!
None
6 trong các ngôn ngữ đó, nhưng
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python thì khác

Python sử dụng từ khóa

>>> print(print("Hello, World!"))
Hello, World!
None
8 để định nghĩa các đối tượng và biến
>>> print(print("Hello, World!"))
Hello, World!
None
4. Mặc dù
>>> print(print("Hello, World!"))
Hello, World!
None
8 phục vụ một số mục đích giống như
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong các ngôn ngữ khác, nhưng nó hoàn toàn là một con quái vật khác. Vì
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python,
>>> print(print("Hello, World!"))
Hello, World!
None
8 không được định nghĩa là
>>> print(print("Hello, World!"))
Hello, World!
None
6 hoặc bất kỳ giá trị nào khác. Trong Python,
>>> print(print("Hello, World!"))
Hello, World!
None
8 là một đối tượng và là công dân hạng nhất

Trong hướng dẫn này, bạn sẽ học

  • >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 là gì và cách kiểm tra nó
  • Khi nào và tại sao sử dụng
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 làm tham số mặc định
  • >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 và
    >>> help(list.sort)
    Help on method_descriptor:
    
    sort(...)
        L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
    
    9 có ý nghĩa gì trong truy nguyên của bạn
  • Cách sử dụng
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 trong kiểm tra loại
  • Cách thức hoạt động của
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    4 trong Python

Tiền thưởng miễn phí. Nhấp vào đây để nhận Bảng cheat Python và tìm hiểu kiến ​​thức cơ bản về Python 3, như làm việc với các kiểu dữ liệu, từ điển, danh sách và hàm Python

Hiểu Null trong Python

>>> print(print("Hello, World!"))
Hello, World!
None
8 là giá trị mà hàm trả về khi không có câu lệnh
>>> import re
>>> match = re.match(r"Goodbye", "Hello, World!")
>>> if match is None:
..     print("It doesn't match.")
It doesn't match.
3 trong hàm

>>>

>>> def has_no_return():
..     pass
>>> has_no_return()
>>> print(has_no_return())
None

Khi bạn gọi

>>> import re
>>> match = re.match(r"Goodbye", "Hello, World!")
>>> if match is None:
..     print("It doesn't match.")
It doesn't match.
4, không có đầu ra nào cho bạn xem. Tuy nhiên, khi bạn in một cuộc gọi đến nó, bạn sẽ thấy _____19_______8 ẩn mà nó trả về

Trên thực tế,

>>> print(print("Hello, World!"))
Hello, World!
None
8 thường xuyên xuất hiện dưới dạng giá trị trả về đến nỗi REPL của Python sẽ không in ra
>>> print(print("Hello, World!"))
Hello, World!
None
8 trừ khi bạn nói rõ ràng với nó

>>>

>>> None
>>> print(None)
None

Bản thân

>>> print(print("Hello, World!"))
Hello, World!
None
8 không có đầu ra, nhưng khi in nó sẽ hiển thị
>>> print(print("Hello, World!"))
Hello, World!
None
8 trên bàn điều khiển

Thật thú vị, bản thân

>>> class BrokenComparison:
..     def __eq__(self, other):
..         return True
>>> b = BrokenComparison()
>>> b == None  # Equality operator
True
>>> b is None  # Identity operator
False
0 không có giá trị trả về. Nếu bạn cố in một cuộc gọi tới
>>> class BrokenComparison:
..     def __eq__(self, other):
..         return True
>>> b = BrokenComparison()
>>> b == None  # Equality operator
True
>>> b is None  # Identity operator
False
0, thì bạn sẽ nhận được
>>> print(print("Hello, World!"))
Hello, World!
None
8

>>>

>>> print(print("Hello, World!"))
Hello, World!
None

Nó có thể trông kỳ lạ, nhưng

>>> class BrokenComparison:
..     def __eq__(self, other):
..         return True
>>> b = BrokenComparison()
>>> b == None  # Equality operator
True
>>> b is None  # Identity operator
False
3 cho bạn thấy
>>> print(print("Hello, World!"))
Hello, World!
None
8 mà
>>> class BrokenComparison:
..     def __eq__(self, other):
..         return True
>>> b = BrokenComparison()
>>> b == None  # Equality operator
True
>>> b is None  # Identity operator
False
0 bên trong trả lại

>>> print(print("Hello, World!"))
Hello, World!
None
8 cũng thường được sử dụng làm tín hiệu cho các tham số bị thiếu hoặc mặc định. Chẳng hạn,
>>> print(print("Hello, World!"))
Hello, World!
None
8 xuất hiện hai lần trong tài liệu cho

>>>

>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

Ở đây,

>>> print(print("Hello, World!"))
Hello, World!
None
8 là giá trị mặc định cho tham số
>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.
0 cũng như kiểu gợi ý cho giá trị trả về. Đầu ra chính xác của
>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.
1 có thể thay đổi từ nền tảng này sang nền tảng khác. Bạn có thể nhận được đầu ra khác khi chạy lệnh này trong trình thông dịch của mình, nhưng nó sẽ tương tự

Loại bỏ các quảng cáo

Sử dụng đối tượng Null của Python >>> print(print("Hello, World!")) Hello, World! None 8

Thông thường, bạn sẽ sử dụng

>>> print(print("Hello, World!"))
Hello, World!
None
8 như một phần của phép so sánh. Một ví dụ là khi bạn cần kiểm tra và xem liệu một số kết quả hoặc tham số có phải là
>>> print(print("Hello, World!"))
Hello, World!
None
8. Lấy kết quả bạn nhận được từ. Biểu thức chính quy của bạn có khớp với một chuỗi đã cho không?

  1. Trả về một đối tượng
    >>> some_result = None
    >>> if some_result:
    ..     print("Got a result!")
    .. else:
    ..     print("No result.")
    ...
    No result.
    
    6. Cụm từ thông dụng của bạn đã tìm thấy kết quả phù hợp
  2. Trả về một đối tượng
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8. Biểu thức chính quy của bạn không tìm thấy kết quả phù hợp

Trong khối mã bên dưới, bạn đang kiểm tra xem mẫu

>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.
8 có khớp với một chuỗi không

>>>_______ 38 _______

>>> import re
>>> match = re.match(r"Goodbye", "Hello, World!")
>>> if match is None:
..     print("It doesn't match.")
It doesn't match.

Ở đây, bạn sử dụng

>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.
9 để kiểm tra xem mẫu có khớp với chuỗi
>>> print(bar)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None
0 không. Khối mã này thể hiện một quy tắc quan trọng cần ghi nhớ khi bạn kiểm tra
>>> print(print("Hello, World!"))
Hello, World!
None
8

  • Sử dụng các toán tử nhận dạng
    >>> print(bar)
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'bar' is not defined
    >>> bar = None
    >>> print(bar)
    None
    
    2 và
    >>> print(bar)
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'bar' is not defined
    >>> bar = None
    >>> print(bar)
    None
    
    3
  • Không sử dụng các toán tử đẳng thức
    >>> print(bar)
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'bar' is not defined
    >>> bar = None
    >>> print(bar)
    None
    
    4 và
    >>> print(bar)
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'bar' is not defined
    >>> bar = None
    >>> print(bar)
    None
    
    5

Các toán tử đẳng thức có thể bị đánh lừa khi bạn so sánh các đối tượng do người dùng định nghĩa sẽ ghi đè lên chúng

>>>_______ 47 _______

>>> class BrokenComparison:
..     def __eq__(self, other):
..         return True
>>> b = BrokenComparison()
>>> b == None  # Equality operator
True
>>> b is None  # Identity operator
False

Ở đây, toán tử đẳng thức

>>> print(bar)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None
4 trả về câu trả lời sai. Mặt khác, toán tử nhận dạng
>>> print(bar)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None
2 không thể bị lừa vì bạn không thể ghi đè lên nó

Ghi chú. Để biết thêm thông tin về cách so sánh với

>>> print(print("Hello, World!"))
Hello, World!
None
8, hãy xem Nên và Không nên. Đề xuất lập trình Python

>>> print(print("Hello, World!"))
Hello, World!
None
8 là sai, có nghĩa là
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
0 là
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
1. Nếu tất cả những gì bạn muốn biết là liệu kết quả có sai hay không, thì một bài kiểm tra như sau là đủ

>>>_______ 58 _______

>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.

Đầu ra không cho bạn thấy rằng

def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
2 chính xác là
>>> print(print("Hello, World!"))
Hello, World!
None
8, chỉ có điều là sai. Nếu bạn phải biết mình có đối tượng
>>> print(print("Hello, World!"))
Hello, World!
None
8 hay không, hãy sử dụng
>>> print(bar)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None
2 và
>>> print(bar)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None
3

Các đối tượng sau đây đều là giả

  • danh sách trống
  • Từ điển trống
  • bộ trống
  • Chuỗi rỗng
  • >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    6
  • def bad_function(new_elem, starter_list=[]):
        starter_list.append(new_elem)
        return starter_list
    
    8

Để biết thêm về phép so sánh, giá trị trung thực và giá trị giả, bạn có thể đọc về cách sử dụng toán tử

def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
9 của Python, cách sử dụng toán tử
>>> my_list = ['a', 'b', 'c']
>>> bad_function('d', my_list)
['a', 'b', 'c', 'd']
0 của Python và cách sử dụng toán tử
>>> my_list = ['a', 'b', 'c']
>>> bad_function('d', my_list)
['a', 'b', 'c', 'd']
1 của Python

Khai báo biến Null trong Python

Trong một số ngôn ngữ, các biến xuất hiện từ một khai báo. Họ không cần phải có một giá trị ban đầu được gán cho họ. Trong các ngôn ngữ đó, giá trị mặc định ban đầu cho một số loại biến có thể là

>>> print(print("Hello, World!"))
Hello, World!
None
4. Tuy nhiên, trong Python, các biến trở nên sống động từ các câu lệnh gán. Hãy xem khối mã sau

>>>

>>> print(bar)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None

Ở đây, bạn có thể thấy rằng biến có giá trị

>>> print(print("Hello, World!"))
Hello, World!
None
8 khác với biến không xác định. Tất cả các biến trong Python đều tồn tại bằng cách gán. Một biến sẽ chỉ bắt đầu hoạt động như
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python nếu bạn gán
>>> print(print("Hello, World!"))
Hello, World!
None
8 cho nó

Loại bỏ các quảng cáo

Sử dụng >>> print(print("Hello, World!")) Hello, World! None 8 làm Tham số mặc định

Thông thường, bạn sẽ sử dụng

>>> print(print("Hello, World!"))
Hello, World!
None
8 làm giá trị mặc định cho tham số tùy chọn. Có một lý do rất chính đáng để sử dụng
>>> print(print("Hello, World!"))
Hello, World!
None
8 ở đây thay vì một loại có thể thay đổi chẳng hạn như danh sách. Hãy tưởng tượng một chức năng như thế này

def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list

>>> my_list = ['a', 'b', 'c']
>>> bad_function('d', my_list)
['a', 'b', 'c', 'd']
9 chứa một bất ngờ khó chịu. Nó hoạt động tốt khi bạn gọi nó với một danh sách hiện có

>>>

>>> my_list = ['a', 'b', 'c']
>>> bad_function('d', my_list)
['a', 'b', 'c', 'd']

Ở đây, bạn thêm

>>> None
>>> print(None)
None
00 vào cuối danh sách mà không gặp vấn đề gì

Nhưng nếu bạn gọi hàm này một vài lần mà không có tham số

>>> None
>>> print(None)
None
01, thì bạn bắt đầu thấy hành vi không chính xác

>>>

>>> None
>>> print(None)
None
0

Giá trị mặc định cho

>>> None
>>> print(None)
None
01 chỉ đánh giá một lần tại thời điểm hàm được xác định, vì vậy mã sẽ sử dụng lại giá trị đó mỗi khi bạn không chuyển danh sách hiện có

Cách đúng đắn để xây dựng chức năng này là sử dụng

>>> print(print("Hello, World!"))
Hello, World!
None
8 làm giá trị mặc định, sau đó kiểm tra nó và khởi tạo một danh sách mới nếu cần

>>>

>>> None
>>> print(None)
None
1

>>> None
>>> print(None)
None
04 hoạt động như bạn muốn bằng cách tạo một danh sách mới với mỗi cuộc gọi mà bạn không chuyển danh sách hiện có. Nó hoạt động vì mã của bạn sẽ thực thi dòng 2 và 3 mỗi khi nó gọi hàm với tham số mặc định

Sử dụng >>> print(print("Hello, World!")) Hello, World! None 8 làm Giá trị Null trong Python

Bạn sẽ làm gì khi

>>> print(print("Hello, World!"))
Hello, World!
None
8 là một đối tượng đầu vào hợp lệ?

>>>

>>> None
>>> print(None)
None
2

Ở đây, lớp

>>> None
>>> print(None)
None
10 đóng vai trò là tín hiệu không nối thêm, vì vậy bạn không cần
>>> print(print("Hello, World!"))
Hello, World!
None
8 cho điều đó. Điều đó giải phóng bạn để thêm
>>> print(print("Hello, World!"))
Hello, World!
None
8 khi bạn muốn

Bạn có thể sử dụng kỹ thuật này khi

>>> print(print("Hello, World!"))
Hello, World!
None
8 cũng có khả năng trả về giá trị. Chẳng hạn, trả về
>>> print(print("Hello, World!"))
Hello, World!
None
8 theo mặc định nếu không tìm thấy khóa trong từ điển. Nếu
>>> print(print("Hello, World!"))
Hello, World!
None
8 là một giá trị hợp lệ trong từ điển của bạn, thì bạn có thể gọi
>>> None
>>> print(None)
None
14 như thế này

>>>

>>> None
>>> print(None)
None
3

Ở đây bạn đã xác định một lớp tùy chỉnh

>>> None
>>> print(None)
None
18. Bây giờ, thay vì trả về
>>> print(print("Hello, World!"))
Hello, World!
None
8 khi từ khóa không có trong từ điển, bạn có thể trả về
>>> None
>>> print(None)
None
18. Điều đó giải phóng bạn để trả về
>>> print(print("Hello, World!"))
Hello, World!
None
8 khi đó là giá trị thực tế trong từ điển

Giải mã >>> print(print("Hello, World!")) Hello, World! None 8 trong Traceback

Khi

>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9 xuất hiện trong truy nguyên của bạn, điều đó có nghĩa là thứ mà bạn không mong đợi là
>>> print(print("Hello, World!"))
Hello, World!
None
8 thực sự là
>>> print(print("Hello, World!"))
Hello, World!
None
8 và bạn đã cố sử dụng nó theo cách mà bạn không thể sử dụng
>>> print(print("Hello, World!"))
Hello, World!
None
8. Hầu như luôn luôn, đó là vì bạn đang cố gọi một phương thức trên đó

Chẳng hạn, bạn đã gọi

>>> None
>>> print(None)
None
27 trên
>>> None
>>> print(None)
None
28 nhiều lần ở trên, nhưng nếu
>>> None
>>> print(None)
None
28 bằng cách nào đó trở thành bất kỳ thứ gì khác ngoài danh sách, thì
>>> None
>>> print(None)
None
27 sẽ thất bại

>>>

>>> None
>>> print(None)
None
4

Ở đây, mã của bạn tăng

>>> None
>>> print(None)
None
31 rất phổ biến vì đối tượng cơ bản,
>>> None
>>> print(None)
None
28, không còn là danh sách nữa. Bạn đã đặt nó thành
>>> print(print("Hello, World!"))
Hello, World!
None
8, mà không biết cách
>>> None
>>> print(None)
None
27, và vì vậy mã sẽ đưa ra một ngoại lệ

Khi bạn nhìn thấy dấu vết như thế này trong mã của mình, trước tiên hãy tìm thuộc tính gây ra lỗi. Đây, là

>>> None
>>> print(None)
None
27. Từ đó, bạn sẽ thấy đối tượng mà bạn đã cố gọi nó. Trong trường hợp này, đó là
>>> None
>>> print(None)
None
28, như bạn có thể biết từ mã ngay phía trên truy nguyên. Cuối cùng, tìm ra cách đối tượng đó trở thành
>>> print(print("Hello, World!"))
Hello, World!
None
8 và thực hiện các bước cần thiết để sửa mã của bạn

Loại bỏ các quảng cáo

Kiểm tra Null trong Python

Có hai trường hợp kiểm tra loại mà bạn sẽ quan tâm về

>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python. Trường hợp đầu tiên là khi bạn

>>>

>>> None
>>> print(None)
None
5

Trường hợp này tương tự như khi bạn không có câu lệnh

>>> import re
>>> match = re.match(r"Goodbye", "Hello, World!")
>>> if match is None:
..     print("It doesn't match.")
It doesn't match.
3 nào cả, câu lệnh này trả về
>>> print(print("Hello, World!"))
Hello, World!
None
8 theo mặc định

Trường hợp thứ hai khó hơn một chút. Đó là nơi bạn đang lấy hoặc trả về một giá trị có thể là

>>> print(print("Hello, World!"))
Hello, World!
None
8, nhưng cũng có thể là một loại (đơn) nào đó. Trường hợp này giống như những gì bạn đã làm với
>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.
5 ở trên, nó trả về một đối tượng
>>> some_result = None
>>> if some_result:
..     print("Got a result!")
.. else:
..     print("No result.")
...
No result.
6 hoặc
>>> print(print("Hello, World!"))
Hello, World!
None
8

Quá trình tương tự đối với các tham số

>>> None
>>> print(None)
None
6

Bạn sửa đổi

>>> None
>>> print(None)
None
04 ở trên và nhập
>>> None
>>> print(None)
None
47 từ
>>> None
>>> print(None)
None
48 để trả lại một
>>> None
>>> print(None)
None
49

Nhìn dưới mui xe

Trong nhiều ngôn ngữ khác,

>>> print(print("Hello, World!"))
Hello, World!
None
4 chỉ là một từ đồng nghĩa với
>>> print(print("Hello, World!"))
Hello, World!
None
6, nhưng
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python là một đối tượng chính thức

>>>

>>> None
>>> print(None)
None
7

Dòng này cho thấy rằng

>>> print(print("Hello, World!"))
Hello, World!
None
8 là một đối tượng và loại của nó là
>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9

Bản thân

>>> print(print("Hello, World!"))
Hello, World!
None
8 được tích hợp vào ngôn ngữ dưới dạng
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python

>>>

>>> None
>>> print(None)
None
8

Tại đây, bạn có thể thấy

>>> print(print("Hello, World!"))
Hello, World!
None
8 trong danh sách
>>> None
>>> print(None)
None
58 là từ điển mà thông dịch viên giữ cho mô-đun
>>> None
>>> print(None)
None
59

>>> print(print("Hello, World!"))
Hello, World!
None
8 là một từ khóa, giống như
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
1 và
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
8. Nhưng vì điều này, bạn không thể liên hệ trực tiếp với
>>> print(print("Hello, World!"))
Hello, World!
None
8 từ
>>> None
>>> print(None)
None
58 như bạn có thể, ví dụ:
>>> None
>>> print(None)
None
65. Tuy nhiên, bạn có thể lấy nó bằng một mẹo

>>>

>>> None
>>> print(None)
None
9

Khi bạn sử dụng _______44_______66, bạn có thể lấy _______19_______8 thực tế từ _______44_______58, điều mà bạn không thể thực hiện bằng cách chỉ yêu cầu nó với _______44_______70

Mặc dù Python in từ

>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9 trong nhiều thông báo lỗi, nhưng
>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9 không phải là mã định danh trong Python. Nó không có trong
>>> None
>>> print(None)
None
59. Bạn chỉ có thể đạt được nó với
>>> None
>>> print(None)
None
74

>>> print(print("Hello, World!"))
Hello, World!
None
8 là một người độc thân. Nghĩa là, lớp
>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9 chỉ cung cấp cho bạn cùng một phiên bản duy nhất của
>>> print(print("Hello, World!"))
Hello, World!
None
8. Chỉ có một
>>> print(print("Hello, World!"))
Hello, World!
None
8 trong chương trình Python của bạn

>>>

>>> print(print("Hello, World!"))
Hello, World!
None
0

Ngay cả khi bạn cố gắng tạo một phiên bản mới, bạn vẫn nhận được phiên bản

>>> print(print("Hello, World!"))
Hello, World!
None
8 hiện có

Bạn có thể chứng minh rằng

>>> print(print("Hello, World!"))
Hello, World!
None
8 và
>>> None
>>> print(None)
None
81 là cùng một đối tượng bằng cách sử dụng

>>>

>>> print(print("Hello, World!"))
Hello, World!
None
1

Ở đây, thực tế là

>>> None
>>> print(None)
None
83 xuất ra cùng một giá trị số nguyên cho cả
>>> print(print("Hello, World!"))
Hello, World!
None
8 và
>>> None
>>> print(None)
None
81, trên thực tế, chúng là cùng một đối tượng

Ghi chú. Giá trị thực do

>>> None
>>> print(None)
None
83 tạo ra sẽ khác nhau giữa các hệ thống và thậm chí giữa các lần thực thi chương trình. Trong CPython, thời gian chạy Python phổ biến nhất,
>>> None
>>> print(None)
None
82 thực hiện công việc của mình bằng cách báo cáo địa chỉ bộ nhớ của một đối tượng. Hai đối tượng sống ở cùng một địa chỉ bộ nhớ là cùng một đối tượng

Nếu bạn cố gán cho

>>> print(print("Hello, World!"))
Hello, World!
None
8, thì bạn sẽ nhận được một
>>> None
>>> print(None)
None
89

>>>

>>> print(print("Hello, World!"))
Hello, World!
None
2

Tất cả các ví dụ trên cho thấy rằng bạn không thể sửa đổi

>>> print(print("Hello, World!"))
Hello, World!
None
8 hoặc
>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9. Chúng là những hằng số thực

Bạn cũng không thể phân lớp

>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
9

>>>

>>> print(print("Hello, World!"))
Hello, World!
None
3

Truy nguyên này cho thấy rằng trình thông dịch sẽ không cho phép bạn tạo một lớp mới kế thừa từ

>>> None
>>> print(None)
None
74

Loại bỏ các quảng cáo

Phần kết luận

>>> print(print("Hello, World!"))
Hello, World!
None
8 là một công cụ mạnh mẽ trong hộp công cụ Python. Giống như
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
1 và
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list
8,
>>> print(print("Hello, World!"))
Hello, World!
None
8 là một từ khóa bất biến. Là
>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python, bạn sử dụng nó để đánh dấu các giá trị và kết quả còn thiếu, và thậm chí cả các tham số mặc định, nơi đây là lựa chọn tốt hơn nhiều so với các loại có thể thay đổi

Bây giờ bạn có thể

  • Thử nghiệm cho
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 với
    >>> print(bar)
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'bar' is not defined
    >>> bar = None
    >>> print(bar)
    None
    
    2 và
    >>> print(bar)
    Traceback (most recent call last):
      File "", line 1, in 
    NameError: name 'bar' is not defined
    >>> bar = None
    >>> print(bar)
    None
    
    3
  • Chọn thời điểm
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 là giá trị hợp lệ trong mã của bạn
  • Sử dụng
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 và các lựa chọn thay thế của nó làm thông số mặc định
  • Giải mã
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 và
    >>> help(list.sort)
    Help on method_descriptor:
    
    sort(...)
        L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
    
    9 trong truy nguyên của bạn
  • Sử dụng
    >>> print(print("Hello, World!"))
    Hello, World!
    None
    
    8 và
    >>> None
    >>> print(None)
    None
    
    47 trong gợi ý loại

Làm thế nào để bạn sử dụng

>>> print(print("Hello, World!"))
Hello, World!
None
4 trong Python?

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Python không có. Null trong Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Không có gì đúng trong Python?

Gửi cho tôi thủ thuật Python »

Về Sói

Không có gì đúng trong Python?
Không có gì đúng trong Python?

Wolf là một Pythonista cuồng nhiệt và viết cho Real Python

» Thông tin thêm về Sói


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Không có gì đúng trong Python?

Aldren

Không có gì đúng trong Python?

Geir Arne

Không có gì đúng trong Python?

Jaya

Không có gì đúng trong Python?

Joanna

Không có gì đúng trong Python?

Mike

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Không ai đánh giá là đúng trong Python?

Tuy nhiên, Không có giá trị nào là Sai , vì vậy toán tử hoặc trả về giá trị "True" đầu tiên, là giá trị thứ hai. Chúng ta phải sửa đổi mã để cả hai đối số hoặc đều đúng.

Không ai đánh giá là TRUE?

None là một giá trị Python đặc biệt giữ một vị trí khi không có gì để nói. Nó không giống với giá trị boolean False , mặc dù giá trị này có vẻ sai khi được đánh giá là boolean .

Là Không và == Không có Python?

None là một đối tượng đơn lẻ (chỉ tồn tại một None ). là kiểm tra xem đối tượng có phải là cùng một đối tượng hay không, trong khi == chỉ kiểm tra xem chúng có tương đương hay không . Nhưng vì chỉ có một None nên chúng sẽ luôn giống nhau và is sẽ trả về True.

Không ai được coi là sai trong Python?

Bool(None) là Sai , vì vậy không có gì ngạc nhiên khi mã không trả về bất kỳ thứ gì. Tuy nhiên, x đã được gán giá trị là Không nên câu lệnh thứ hai cũng là Sai và mã không trả về gì cả. Để kiểm tra xem các câu lệnh có tương đương nhau hay không, chúng ta có thể chạy thêm một vài câu lệnh thông qua python để kiểm tra.