Python là chức năng hay đối tượng

Lập trình hàm là một mô hình lập trình trong đó phương pháp tính toán chính là đánh giá các hàm. Trong hướng dẫn này, bạn sẽ khám phá lập trình chức năng trong Python

Lập trình chức năng thường đóng một vai trò khá nhỏ trong mã Python. Nhưng thật tốt khi làm quen với nó. Ít nhất, thỉnh thoảng bạn có thể gặp nó khi đọc mã do người khác viết. Bạn thậm chí có thể tìm thấy các tình huống thuận lợi khi sử dụng các khả năng lập trình chức năng của Python trong mã của riêng bạn

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

  • Mô hình lập trình chức năng đòi hỏi gì
  • Ý nghĩa của việc nói rằng các hàm là công dân hạng nhất trong Python
  • Cách xác định hàm ẩn danh với từ khóa
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    3
  • Cách triển khai mã chức năng bằng cách sử dụng
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    4,
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    5 và
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    6

Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới

Lập trình chức năng là gì?

Một hàm thuần túy là một hàm có giá trị đầu ra chỉ theo sau các giá trị đầu vào của nó mà không có bất kỳ tác dụng phụ nào có thể quan sát được. Trong lập trình chức năng, một chương trình hoàn toàn bao gồm việc đánh giá các chức năng thuần túy. Quá trình tính toán tiến hành bằng các lệnh gọi hàm lồng nhau hoặc tổng hợp, không thay đổi trạng thái hoặc dữ liệu có thể thay đổi

Mô hình chức năng phổ biến vì nó mang lại một số lợi thế so với các mô hình lập trình khác. Mã chức năng là

  • Trình độ cao. Bạn đang mô tả kết quả bạn muốn thay vì chỉ định rõ ràng các bước cần thiết để đạt được điều đó. Các tuyên bố đơn có xu hướng ngắn gọn nhưng có nhiều cú đấm
  • Trong suốt. Hành vi của một hàm thuần túy chỉ phụ thuộc vào đầu vào và đầu ra của nó, không có giá trị trung gian. Điều đó loại bỏ khả năng tác dụng phụ, tạo điều kiện gỡ lỗi
  • song song. Các thói quen không gây tác dụng phụ có thể dễ dàng chạy song song với nhau hơn

Nhiều ngôn ngữ lập trình hỗ trợ một số mức độ lập trình chức năng. Trong một số ngôn ngữ, hầu như tất cả mã đều tuân theo mô hình chức năng. Haskell là một ví dụ như vậy. Ngược lại, Python không hỗ trợ lập trình chức năng nhưng cũng chứa các tính năng của các mô hình lập trình khác

Mặc dù đúng là mô tả chuyên sâu về lập trình hàm hơi phức tạp, nhưng mục tiêu ở đây không phải là trình bày một định nghĩa chặt chẽ mà là để cho bạn thấy những gì bạn có thể làm bằng cách lập trình hàm trong Python

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

Python hỗ trợ lập trình chức năng tốt như thế nào?

Để hỗ trợ lập trình chức năng, sẽ rất hữu ích nếu một chức năng trong ngôn ngữ lập trình nhất định có hai khả năng

  1. Để lấy một hàm khác làm đối số
  2. Để trả lại một chức năng khác cho người gọi của nó

Python chơi độc đáo ở cả hai khía cạnh này. Như bạn đã học trước đây trong loạt bài này, mọi thứ trong chương trình Python đều là đối tượng. Tất cả các đối tượng trong Python đều có tầm vóc ít nhiều bằng nhau và các hàm cũng không ngoại lệ

Trong Python, các hàm là công dân hạng nhất. Điều đó có nghĩa là các hàm có các đặc điểm giống như các giá trị như chuỗi và số. Bất cứ điều gì bạn mong muốn có thể thực hiện với một chuỗi hoặc số, bạn cũng có thể thực hiện với một hàm

Ví dụ, bạn có thể gán một chức năng cho một biến. Sau đó, bạn có thể sử dụng biến đó giống như cách bạn sử dụng chính hàm đó

>>>

 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!

Phép gán

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
7 trên dòng 8 tạo một tham chiếu mới tới
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
8 có tên là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
9. Sau đó, bạn có thể gọi hàm bằng một trong hai tên,
 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
0 hoặc
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
9, như được hiển thị trên dòng 5 và 9

Bạn có thể hiển thị một chức năng cho bảng điều khiển với

 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
2, bao gồm nó như một thành phần trong đối tượng dữ liệu tổng hợp như danh sách hoặc thậm chí sử dụng nó làm khóa từ điển

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
1

Trong ví dụ này,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
8 xuất hiện trong tất cả các ngữ cảnh giống như các giá trị
 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
4 và
 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
5 và trình thông dịch xử lý nó tốt

Ghi chú. Những gì bạn có thể hoặc không thể làm với bất kỳ đối tượng nào trong Python phụ thuộc vào ngữ cảnh ở một mức độ nào đó. Ví dụ, có một số thao tác hoạt động đối với các loại đối tượng nhất định nhưng không hoạt động đối với các loại đối tượng khác

Bạn có thể cộng hai đối tượng số nguyên hoặc nối hai đối tượng chuỗi bằng toán tử cộng [

 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
6]. Nhưng toán tử cộng không được định nghĩa cho các đối tượng hàm

Đối với các mục đích hiện tại, điều quan trọng là các hàm trong Python đáp ứng hai tiêu chí có lợi cho lập trình hàm được liệt kê ở trên. Bạn có thể chuyển một hàm cho một hàm khác làm đối số

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6

Đây là những gì đang xảy ra trong ví dụ trên

  • Cuộc gọi trên dòng 9 vượt qua
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    7 làm đối số cho
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    8
  • Trong phạm vi
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    8, Python liên kết
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    7 với tham số hàm
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    11
  • Sau đó,
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    8 có thể gọi trực tiếp cho
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    7 qua
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    11

Điều này được gọi là thành phần chức năng

lưu ý kỹ thuật. Python cung cấp một ký hiệu tắt được gọi là trình trang trí để tạo điều kiện gói một chức năng bên trong một chức năng khác. Để biết thêm thông tin, hãy xem Primer on Python Decorators

Khi bạn truyền một hàm cho một hàm khác, hàm được truyền vào đôi khi được gọi là hàm gọi lại vì một lệnh gọi lại hàm bên trong có thể sửa đổi hành vi của hàm bên ngoài

Một ví dụ điển hình về điều này là hàm Python

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15. Thông thường, nếu bạn chuyển một danh sách các giá trị chuỗi tới
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15, thì nó sẽ sắp xếp chúng theo thứ tự từ vựng

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
7

Tuy nhiên,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15 lấy một đối số
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
18 tùy chọn chỉ định hàm gọi lại có thể đóng vai trò là khóa sắp xếp. Vì vậy, ví dụ: thay vào đó, bạn có thể sắp xếp theo độ dài chuỗi

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
0

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15 cũng có thể nhận một đối số tùy chọn chỉ định sắp xếp theo thứ tự đảo ngược. Nhưng bạn có thể quản lý điều tương tự bằng cách xác định chức năng gọi lại của riêng bạn để đảo ngược ý nghĩa của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
20

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']

Bạn có thể xem Cách sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
22 trong Python để biết thêm thông tin về cách sắp xếp dữ liệu trong Python

Giống như bạn có thể chuyển một hàm cho một hàm khác làm đối số, một hàm cũng có thể chỉ định một hàm khác làm giá trị trả về của nó

>>>

 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!

Đây là những gì đang diễn ra trong ví dụ này

  • Dòng 2 đến 3.
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    8 định nghĩa một hàm cục bộ
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    7
  • dòng 6.
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    8 chuyển
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    7 trở lại làm giá trị trả về của nó
  • Dòng 9. Giá trị trả về từ
     1>>> def outer[]:
     2..     def inner[]:
     3..             print["I am function inner[]!"]
     4...
     5..     # Function outer[] returns function inner[]
     6..     return inner
     7...
     8
     9>>> function = outer[]
    10>>> function
    11
    12>>> function[]
    13I am function inner[]!
    14
    15>>> outer[][]
    16I am function inner[]!
    
    8 được gán cho biến
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    11

Sau đó, bạn có thể gọi gián tiếp

 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
7 thông qua
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
11, như được hiển thị trên dòng 12. Bạn cũng có thể gọi nó một cách gián tiếp bằng cách sử dụng giá trị trả về từ
 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
8 mà không cần chuyển nhượng trung gian, như trên dòng 15

Như bạn có thể thấy, Python có sẵn các phần để hỗ trợ lập trình chức năng một cách độc đáo. Tuy nhiên, trước khi bạn chuyển sang mã chức năng, có một khái niệm nữa sẽ hữu ích để bạn khám phá. biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

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

Định nghĩa một hàm ẩn danh với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

Lập trình hàm là tất cả về việc gọi các hàm và truyền chúng xung quanh, do đó, đương nhiên nó liên quan đến việc xác định rất nhiều hàm. Bạn luôn có thể định nghĩa một hàm theo cách thông thường, sử dụng từ khóa

 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!
84 như bạn đã thấy trong các hướng dẫn trước của loạt bài này

Tuy nhiên, đôi khi, thật thuận tiện khi có thể xác định một hàm ẩn danh một cách nhanh chóng mà không cần phải đặt tên cho nó. Trong Python, bạn có thể làm điều này với biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

lưu ý kỹ thuật. Thuật ngữ lambda xuất phát từ phép tính lambda, một hệ thống logic toán học chính thức để thể hiện phép tính dựa trên sự trừu tượng hóa hàm và ứng dụng

Cú pháp của một biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 như sau

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
1

Bảng dưới đây tóm tắt các phần của biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

ComponentMeaning

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3Từ khóa giới thiệu một biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
100Một danh sách các tên tham số được phân tách bằng dấu phẩy tùy chọn
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
101Dấu chấm câu phân tách
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
100 khỏi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
103
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
103Một biểu thức thường liên quan đến các tên trong
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
100

Giá trị của một biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 là một hàm có thể gọi được, giống như một hàm được xác định bằng từ khóa
 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!
84. Nó nhận các đối số, như được chỉ định bởi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
100 và trả về một giá trị, như được chỉ định bởi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
103

Đây là một ví dụ nhanh đầu tiên

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
2

Câu lệnh trên dòng 1 chỉ là biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 của chính nó. Ở dòng 2, Python hiển thị giá trị của biểu thức mà bạn có thể thấy là một hàm

Hàm Python tích hợp sẵn

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
111 trả về
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
112 nếu đối số được truyền cho nó dường như có thể gọi được và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
113 nếu không. Dòng 4 và 5 cho thấy rằng giá trị được trả về bởi biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 trên thực tế có thể gọi được, vì một hàm phải là

Trong trường hợp này, danh sách tham số bao gồm tham số duy nhất

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
115. Biểu thức tiếp theo
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
116 là cú pháp cắt lát trả về các ký tự trong
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
115 theo thứ tự ngược lại. Vì vậy, biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 này định nghĩa một hàm tạm thời, không tên, nhận một đối số chuỗi và trả về chuỗi đối số với các ký tự bị đảo ngược

Đối tượng được tạo bởi biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 là công dân hạng nhất, giống như hàm tiêu chuẩn hoặc bất kỳ đối tượng nào khác trong Python. Bạn có thể gán nó cho một biến và sau đó gọi hàm bằng tên đó

>>>

 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!
8

Đây là chức năng — không có ý định chơi chữ — tương đương với việc xác định

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
120 với từ khóa
 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!
84

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
10

Các cuộc gọi trên dòng 4 và 8 ở trên hoạt động giống hệt nhau

Tuy nhiên, không cần thiết phải gán biến cho biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 trước khi gọi nó. Bạn cũng có thể gọi trực tiếp hàm được xác định bởi biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
11

Đây là một ví dụ khác

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
12

Trong trường hợp này, các tham số là

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
124,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
125 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
126 và biểu thức là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
127. Đây là một hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 ẩn danh để tính trung bình cộng của ba số

Một ví dụ khác, hãy nhớ lại ở trên khi bạn xác định một

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
129 để phục vụ như một chức năng gọi lại cho
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
13

Bạn cũng có thể sử dụng hàm

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 tại đây

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
14

Một biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 thường sẽ có một danh sách tham số, nhưng nó không bắt buộc. Bạn có thể định nghĩa hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 không có tham số. Giá trị trả về sau đó không phụ thuộc vào bất kỳ tham số đầu vào nào

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
15

Lưu ý rằng bạn chỉ có thể định nghĩa các hàm khá thô sơ với

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3. Giá trị trả về từ một biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 chỉ có thể là một biểu thức duy nhất. Biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 không thể chứa các câu lệnh như phép gán hoặc
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
137, cũng như không thể chứa các cấu trúc điều khiển như
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
138,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
139,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
140,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
141 hoặc
 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!
84

Bạn đã học được trong hướng dẫn trước về cách xác định hàm Python rằng một hàm được xác định bằng

 1>>> def func[]:
 2..     print["I am function func[]!"]
 3...
 4
 5>>> func[]
 6I am function func[]!
 7
 8>>> another_name = func
 9>>> another_name[]
10I am function func[]!
84 có thể trả về nhiều giá trị một cách hiệu quả. Nếu một câu lệnh
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
137 trong một hàm chứa một số giá trị được phân tách bằng dấu phẩy, thì Python sẽ đóng gói chúng và trả về chúng dưới dạng một bộ

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
16

Gói tuple ẩn này không hoạt động với hàm

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 ẩn danh

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
17

Nhưng bạn có thể trả về một bộ từ hàm

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3. Bạn chỉ cần biểu thị bộ dữ liệu một cách rõ ràng bằng dấu ngoặc đơn. Bạn cũng có thể trả về danh sách hoặc từ điển từ hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
18

Một biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 có không gian tên cục bộ riêng của nó, vì vậy các tên tham số không xung đột với các tên giống hệt nhau trong không gian tên chung. Một biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 có thể truy cập các biến trong không gian tên chung, nhưng nó không thể sửa đổi chúng

Có một điều kỳ lạ cuối cùng cần lưu ý. Nếu bạn thấy cần bao gồm một biểu thức

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 trong một chuỗi ký tự được định dạng [chuỗi f], thì bạn sẽ cần đặt nó trong dấu ngoặc đơn rõ ràng

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
19

Bây giờ bạn đã biết cách định nghĩa một hàm ẩn danh với

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3. Để đọc thêm về các hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3, hãy xem Cách sử dụng các hàm Lambda của Python

Tiếp theo, đã đến lúc đi sâu vào lập trình chức năng trong Python. Bạn sẽ thấy các hàm

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 đặc biệt tiện lợi như thế nào khi viết mã chức năng

Python cung cấp hai hàm dựng sẵn,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5, phù hợp với mô hình lập trình hàm. Thứ ba,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6, không còn là một phần của ngôn ngữ cốt lõi nhưng vẫn có sẵn từ một mô-đun có tên là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
157. Mỗi hàm trong số ba hàm này lấy một hàm khác làm một trong các đối số của nó

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

Áp dụng một hàm cho một Iterable với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4

Hàm đầu tiên trên docket là

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4, đây là hàm tích hợp sẵn của Python. Với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4, bạn có thể lần lượt áp dụng một hàm cho từng phần tử trong một iterable và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 sẽ trả về một iterator mang lại kết quả. Điều này có thể cho phép một số mã rất ngắn gọn vì một câu lệnh
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 thường có thể thay thế một vòng lặp rõ ràng

Gọi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 với một Iterable duy nhất

Cú pháp gọi

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 trên một lần lặp duy nhất trông như thế này

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
60

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
165 trả về trong iterator mang lại kết quả của việc áp dụng hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 cho từng phần tử của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
167

Đây là một ví dụ. Giả sử bạn đã định nghĩa

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
120, một hàm nhận một đối số chuỗi và trả về kết quả ngược lại, sử dụng cơ chế cắt chuỗi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
169 của người bạn cũ của bạn

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
61

Nếu bạn có một danh sách các chuỗi, thì bạn có thể sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 để áp dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
120 cho từng phần tử của danh sách

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
62

Nhưng hãy nhớ rằng,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 không trả về một danh sách. Nó trả về một iterator gọi là đối tượng bản đồ. Để có được các giá trị từ trình vòng lặp, bạn cần lặp lại nó hoặc sử dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
173

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
63

Lặp lại trên

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
174 mang lại các mục từ danh sách ban đầu
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
175, với mỗi chuỗi được đảo ngược bởi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
120

Trong ví dụ này,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
120 là một hàm khá ngắn, một hàm mà bạn có thể không cần đến ngoài mục đích sử dụng này với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4. Thay vì làm lộn xộn mã bằng một hàm bỏ đi, thay vào đó bạn có thể sử dụng một hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 ẩn danh

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
64

Nếu iterable chứa các mục không phù hợp với chức năng đã chỉ định, thì Python sẽ đưa ra một ngoại lệ

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
65

Trong trường hợp này, hàm

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 mong đợi một đối số chuỗi mà nó sẽ cố gắng cắt. Phần tử thứ hai trong danh sách,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
181, là một đối tượng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
182, không thể cắt được. Vì vậy, một
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
183 xảy ra

Đây là một ví dụ thực tế hơn một chút. Trong phần hướng dẫn về các phương thức chuỗi tích hợp, bạn đã gặp phải

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
184, nối các chuỗi từ một lần lặp, được phân tách bằng chuỗi đã chỉ định

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
66

Điều này hoạt động tốt nếu các đối tượng trong danh sách là chuỗi. Nếu không, thì

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
184 sẽ đưa ra một ngoại lệ
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
183

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
67

Một cách để khắc phục điều này là với một vòng lặp. Sử dụng vòng lặp

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
138, bạn có thể tạo một danh sách mới chứa các biểu diễn chuỗi của các số trong danh sách ban đầu. Sau đó, bạn có thể chuyển danh sách mới tới
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
188

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
68

Tuy nhiên, vì

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 lần lượt áp dụng một hàm cho từng đối tượng của danh sách, nên nó thường có thể loại bỏ nhu cầu về một vòng lặp rõ ràng. Trong trường hợp này, bạn có thể sử dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 để áp dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
191 cho các đối tượng danh sách trước khi nối chúng

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
69

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
192 trả về một trình vòng lặp mang lại danh sách các đối tượng chuỗi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
193 và sau đó bạn có thể chuyển thành công danh sách đó tới
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
188

Mặc dù

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 đạt được hiệu quả mong muốn trong ví dụ trên, nhưng sẽ hợp lý hơn nếu sử dụng cách hiểu danh sách để thay thế vòng lặp rõ ràng trong trường hợp như thế này

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

Gọi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 với nhiều lần lặp

Có một dạng khác của

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 có nhiều hơn một đối số có thể lặp lại

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
70

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
198
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
199
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
600
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
601
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
602
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
603
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
604 áp dụng song song
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 cho các phần tử trong mỗi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
606
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
607
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
608 và trả về một trình vòng lặp mang lại kết quả

Số lượng đối số

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
606____1607
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
608 được chỉ định cho
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 phải khớp với số lượng đối số mà
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 mong đợi.
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 hoạt động trên mục đầu tiên của mỗi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
606
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
607
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
608 và kết quả đó trở thành mục đầu tiên mà trình lặp trả về mang lại. Sau đó,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 tác động lên mục thứ hai trong mỗi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
606
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
607
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
608, và mục đó trở thành mục mang lại thứ hai, v.v.

Một ví dụ sẽ giúp làm rõ

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
71

Trong trường hợp này,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
622 có ba đối số. Tương ứng, có ba đối số có thể lặp lại đối với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4. các danh sách
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
624,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
625 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
626

Mục đầu tiên được trả về là kết quả của việc áp dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
622 cho phần tử đầu tiên trong mỗi danh sách.
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
628. Mục thứ hai được trả về là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
629 và mục thứ ba là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
630, như thể hiện trong sơ đồ sau

Giá trị trả về từ

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 là một trình vòng lặp mang lại danh sách
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
632

Một lần nữa trong trường hợp này, vì

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
622 quá ngắn, bạn có thể dễ dàng thay thế nó bằng hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 để thay thế

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
72

Ví dụ này sử dụng dấu ngoặc đơn bổ sung xung quanh hàm

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 và tiếp tục dòng ẩn. Cả hai đều không cần thiết, nhưng chúng giúp mã dễ đọc hơn

Chọn các phần tử từ một Iterable với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5 cho phép bạn chọn hoặc lọc các mục từ một lần lặp dựa trên đánh giá của chức năng đã cho. Nó được gọi như sau

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
73

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
638 áp dụng hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 cho từng phần tử của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
167 và trả về một trình vòng lặp mang lại tất cả các mục mà
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 là trung thực. Ngược lại, nó lọc ra tất cả các mục mà
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 là giả

Trong ví dụ sau,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
643 là true nếu
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
644

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
74

Trong trường hợp này,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
645 là trung thực đối với các mục
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
646,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
647 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
648, vì vậy các mục này vẫn còn, trong khi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
199,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
601 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
651 bị loại bỏ. Như trong các ví dụ trước,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
645 là một hàm ngắn và bạn có thể thay thế nó bằng biểu thức
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
75

Ví dụ tiếp theo có tính năng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
654.
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
655 tạo ra một iterator mang lại các số nguyên từ
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
656 đến
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
657. Ví dụ sau sử dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5 để chỉ chọn các số chẵn từ danh sách và lọc ra các số lẻ

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
76

Đây là một ví dụ sử dụng phương thức chuỗi tích hợp

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
77

Hãy nhớ từ hướng dẫn trước về các phương thức chuỗi mà

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
659 trả về
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
112 nếu tất cả các ký tự chữ cái trong
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
115 là chữ hoa và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
113 nếu ngược lại

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

Giảm một Iterable thành một giá trị duy nhất với
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 áp dụng một chức năng cho các mục trong hai mục có thể lặp lại cùng một lúc, dần dần kết hợp chúng để tạo ra một kết quả duy nhất

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 đã từng là một hàm tích hợp sẵn trong Python. Guido van Rossum dường như không thích
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 và ủng hộ việc loại bỏ hoàn toàn khỏi ngôn ngữ. Đây là những gì anh ấy đã nói về nó

Vì vậy, bây giờ

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6. Đây thực sự là điều mà tôi luôn ghét nhất, bởi vì, ngoài một vài ví dụ liên quan đến
 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
6 hoặc
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
669, hầu như mỗi khi tôi thấy một lệnh gọi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 với một đối số hàm không tầm thường, tôi đều cần phải lấy bút và giấy để vẽ biểu đồ. . Vì vậy, theo suy nghĩ của tôi, khả năng áp dụng của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 bị giới hạn khá nhiều đối với các toán tử kết hợp và trong tất cả các trường hợp khác, tốt hơn hết là viết ra vòng lặp tích lũy một cách rõ ràng. [Nguồn]

Guido thực sự ủng hộ việc loại bỏ cả ba

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5 khỏi Python. Người ta chỉ có thể đoán tại lý do của mình. Khi nó xảy ra, việc hiểu danh sách đã đề cập trước đó bao gồm chức năng được cung cấp bởi tất cả các chức năng này và hơn thế nữa. Bạn có thể tìm hiểu thêm bằng cách đọc Khi nào nên sử dụng khả năng hiểu danh sách trong Python

Như bạn đã thấy,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5 vẫn là các hàm tích hợp sẵn trong Python.
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 không còn là chức năng tích hợp sẵn, nhưng nó có sẵn để nhập từ mô-đun thư viện tiêu chuẩn, như bạn sẽ thấy tiếp theo

Để sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6, bạn cần nhập nó từ một mô-đun có tên là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
157. Điều này có thể thực hiện theo nhiều cách, nhưng sau đây là cách đơn giản nhất

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
78

Sau đó, trình thông dịch đặt

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 vào không gian tên chung và cung cấp nó để sử dụng. Các ví dụ bạn sẽ thấy bên dưới giả định rằng đây là trường hợp

Gọi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 với hai đối số

Cuộc gọi

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 đơn giản nhất có một chức năng và một lần lặp, như được hiển thị bên dưới

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
79

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
684 sử dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166, phải là một hàm nhận chính xác hai đối số, để kết hợp dần dần các phần tử trong
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
167. Để bắt đầu,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 gọi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166 trên hai phần tử đầu tiên của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
167. Kết quả đó sau đó được kết hợp với phần tử thứ ba, rồi kết quả đó với phần tử thứ tư, v.v. cho đến khi hết danh sách. Sau đó,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 trả về kết quả cuối cùng

Guido đã đúng khi nói rằng các ứng dụng đơn giản nhất của

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 là những ứng dụng sử dụng toán tử kết hợp. Hãy bắt đầu với toán tử cộng [
 1>>> def outer[]:
 2..     def inner[]:
 3..             print["I am function inner[]!"]
 4...
 5..     # Function outer[] returns function inner[]
 6..     return inner
 7...
 8
 9>>> function = outer[]
10>>> function
11
12>>> function[]
13I am function inner[]!
14
15>>> outer[][]
16I am function inner[]!
6]

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
00

Cuộc gọi này đến

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 tạo ra kết quả
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
694 từ danh sách
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
695 như sau

giảm[f, [1, 2, 3, 4, 5]]

Đây là một cách khá vòng vo để tính tổng các số trong danh sách. Trong khi điều này hoạt động tốt, có một cách trực tiếp hơn.

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
696 tích hợp sẵn của Python trả về tổng các giá trị số trong một lần lặp

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
01

Hãy nhớ rằng toán tử cộng nhị phân cũng nối các chuỗi. Vì vậy, ví dụ tương tự này cũng sẽ dần dần nối các chuỗi trong một danh sách

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
02

Một lần nữa, có một cách để thực hiện điều này mà hầu hết sẽ xem xét Pythonic điển hình hơn. Đây chính xác là những gì

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
184 làm

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
03

Bây giờ hãy xem xét một ví dụ sử dụng toán tử nhân nhị phân [______1669]. Giai thừa của một số nguyên dương

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
603 được định nghĩa như sau

Bạn có thể triển khai hàm giai thừa bằng cách sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
654 như hình bên dưới

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
04

Một lần nữa, có một cách đơn giản hơn để làm điều này. Bạn có thể sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
702 được cung cấp bởi mô-đun
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
703 tiêu chuẩn

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
05

Ví dụ cuối cùng, giả sử bạn cần tìm giá trị lớn nhất trong danh sách. Python cung cấp hàm có sẵn

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
704 để làm điều này, nhưng bạn cũng có thể sử dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
06

Lưu ý rằng trong mỗi ví dụ trên, hàm được truyền cho

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 là hàm một dòng. Trong mỗi trường hợp, bạn có thể sử dụng hàm
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 để thay thế

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
07

Đây là một cách thuận tiện để tránh đặt một chức năng không cần thiết vào không gian tên. Mặt khác, người đọc mã có thể khó xác định ý định của bạn hơn một chút khi bạn sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3 thay vì xác định một chức năng riêng biệt. Như thường lệ, đó là sự cân bằng giữa khả năng đọc và sự tiện lợi

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

Gọi
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 với giá trị ban đầu

Có một cách khác để gọi

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 chỉ định giá trị ban đầu cho chuỗi rút gọn

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
08

Khi có mặt,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
711 chỉ định giá trị ban đầu cho tổ hợp. Trong cuộc gọi đầu tiên tới
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
166, các đối số là
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
711 và phần tử đầu tiên của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
167. Kết quả đó sau đó được kết hợp với phần tử thứ hai của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
167, v.v.

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
09

Bây giờ chuỗi các cuộc gọi chức năng trông như thế này

giảm[f, [1, 2, 3, 4, 5], 100]

Bạn có thể dễ dàng đạt được kết quả tương tự mà không cần

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
0

Như bạn đã thấy trong các ví dụ trên, ngay cả trong trường hợp bạn có thể hoàn thành một nhiệm vụ bằng cách sử dụng

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6, thì thường có thể tìm thấy một cách đơn giản và Pythonic hơn để hoàn thành cùng một nhiệm vụ mà không cần nó. Có lẽ không quá khó để tưởng tượng tại sao
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 lại bị xóa khỏi ngôn ngữ chính

Điều đó nói rằng,

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 là một chức năng đáng chú ý. Mô tả ở đầu phần này nói rằng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 kết hợp các phần tử để tạo ra một kết quả duy nhất. Nhưng kết quả đó có thể là một đối tượng tổng hợp như danh sách hoặc bộ dữ liệu. Vì lý do đó,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 là một hàm bậc cao rất tổng quát mà từ đó có thể triển khai nhiều hàm khác

Ví dụ: bạn có thể triển khai

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4 theo nghĩa của
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
1

Bạn cũng có thể triển khai

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5 bằng cách sử dụng
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6

>>>

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
2

Trong thực tế, bất kỳ thao tác nào trên một chuỗi các đối tượng đều có thể được biểu diễn dưới dạng phép rút gọn

Phần kết luận

Lập trình hàm là một mô hình lập trình trong đó phương pháp tính toán chính là đánh giá các hàm thuần túy. Mặc dù Python chủ yếu không phải là một ngôn ngữ chức năng, nhưng thật tốt khi làm quen với

>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
3,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
4,
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
5 và
>>> animals = ["ferret", "vole", "dog", "gecko"]
>>> sorted[animals, key=len, reverse=True]
['ferret', 'gecko', 'vole', 'dog']

>>> def reverse_len[s]:
..     return -len[s]
...
>>> sorted[animals, key=reverse_len]
['ferret', 'gecko', 'vole', 'dog']
6 vì chúng có thể giúp bạn viết mã ngắn gọn, cấp cao, có thể song song hóa. Bạn cũng sẽ thấy chúng trong mã mà những người khác đã viết

Trong hướng dẫn này, bạn đã học

  • lập trình chức năng là gì
  • Làm thế nào các chức năng trong Python là công dân hạng nhất và làm thế nào điều đó làm cho chúng phù hợp với lập trình chức năng
  • Cách xác định hàm ẩn danh đơn giản với
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    3
  • Cách triển khai mã chức năng với
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    4,
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    5 và
    >>> animals = ["ferret", "vole", "dog", "gecko"]
    >>> sorted[animals, key=len, reverse=True]
    ['ferret', 'gecko', 'vole', 'dog']
    
    >>> def reverse_len[s]:
    ..     return -len[s]
    ...
    >>> sorted[animals, key=reverse_len]
    ['ferret', 'gecko', 'vole', 'dog']
    
    6

Cùng với đó, bạn đã đi đến phần cuối của loạt bài giới thiệu này về các nguyên tắc cơ bản khi làm việc với Python. Xin chúc mừng. Bây giờ bạn đã có một nền tảng vững chắc để tạo các chương trình hữu ích theo phong cách Pythonic hiệu quả

Nếu bạn quan tâm đến việc nâng cao kỹ năng Python của mình, thì bạn có thể xem một số hướng dẫn trung cấp và nâng cao hơn. Bạn cũng có thể xem một số ý tưởng dự án Python để bắt đầu thể hiện sức mạnh siêu nhiên của Python. Mã hóa vui vẻ

« Không gian tên và Phạm vi trong Python

Lập trình hàm trong Python

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

🐍 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

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

Giới thiệu về John Sturtz

John là một Pythonista cuồng nhiệt và là thành viên của nhóm hướng dẫn Real Python

» Thông tin thêm về John

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à

Aldren

Bartosz

Geir Arne

Joanna

Gia-cốp

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 »

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 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. Nhận các mẹo để đặt câu hỏi hay 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

Python có phải là một chức năng không?

Mặc dù Python chủ yếu không phải là một ngôn ngữ chức năng , nhưng bạn nên làm quen với lambda , map[] , filter[] và reduce . Bạn cũng sẽ thấy chúng trong mã mà những người khác đã viết.

Python có định hướng chức năng không?

Python không phải là ngôn ngữ lập trình chức năng nghiêm ngặt . Nhưng thật tầm thường khi viết Python theo phong cách chức năng. Có ba chức năng cơ bản trên iterables cho phép chúng ta viết một chương trình mạnh mẽ theo cách rất tầm thường. lọc, lập bản đồ và thu nhỏ.

Là đối tượng Python

Vâng, Python có phải là ngôn ngữ lập trình hướng đối tượng không? .

Python có phải là một đối tượng không?

Python là ngôn ngữ lập trình hướng đối tượng. Hầu hết mọi thứ trong Python đều là đối tượng , với các thuộc tính và phương thức của nó. Lớp giống như một hàm tạo đối tượng hoặc "bản thiết kế" để tạo đối tượng.

Chủ Đề