2009-02-14 46 views
20

Tại sao python 2.5.2 có các hành vi sau đâyPython mở rộng với một lỗi danh sách trống?

>>>[2].extend([]) == [2] 
False 

>>> [2].extend([]) == None 
True 

$ python --version 
Python 2.5.2 

tôi giả sử tôi không hiểu điều gì đó ở đây, nhưng bằng trực giác tôi nghĩ rằng [2] .extend ([]) nên năng suất [2]

+0

Ai cần trực giác khi có thông dịch viên? Chỉ cần 'in [2] .extend ([])'. – tzot

Trả lời

35

Mở rộng là một phương pháp của danh sách, mà sửa đổi nó nhưng không trả lại self (trả lại None thay thế). Nếu bạn cần giá trị được sửa đổi làm giá trị biểu thức, hãy sử dụng +, như trong [2]+[].

9

Chính xác.

>>> x = [2] 
>>> x.extend([]) # Nothing is printed because the return value is None 
>>> x == [2] 
True 
>>> x 
[2] 

Chúng thực hiện mục đích này để bạn nhớ rằng chức năng mở rộng thực sự đang sửa đổi danh sách tại chỗ. Tương tự với sort(). Nó luôn luôn trả về None.

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