Hướng dẫn else clause for loop python - mệnh đề else cho vòng lặp python

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận
     

    Sử dụng câu lệnh có điều kiện khác với vòng lặp trong Python

    Trong hầu hết các ngôn ngữ lập trình [C/C ++, Java, v.v.], việc sử dụng tuyên bố khác đã bị hạn chế với các câu lệnh IF có điều kiện. Nhưng Python cũng cho phép chúng tôi sử dụng điều kiện khác với các vòng lặp. & NBSP; 

    Khối khác chỉ sau khi/trong khi chỉ được thực thi khi vòng lặp không bị chấm dứt bởi một câu lệnh break.

    Khối khác được thực thi trong chương trình Python 3.x bên dưới: & NBSP;

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    8
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    9

    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    0
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    1

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    8
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    2
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    5
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    6

    Python

    1
    2
    3
    No Break

    Is 

    Khối khác chỉ sau khi/trong khi chỉ được thực thi khi vòng lặp không bị chấm dứt bởi một câu lệnh break.

    Khối khác được thực thi trong chương trình Python 3.x bên dưới: & NBSP;

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    8
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    9

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> range[10]
    range[0, 10]
    
    0

    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    0
    >>> range[10]
    range[0, 10]
    
    2

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    8
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    2
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    5
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    6

    Python

    1

    Is
    In the following example, the else statement will only be executed if no element of the array is even, i.e. if statement has not been executed for any iteration. Therefore for the array [1, 9, 8] the if is executed in the third iteration of the loop and hence the else present after the for loop is ignored. In the case of array [1, 3, 5] the if is not executed for any iteration and hence the else after the loop is executed.

    Khối khác chỉ sau khi/trong khi chỉ được thực thi khi vòng lặp không bị chấm dứt bởi một câu lệnh break.

    Khối khác được thực thi trong chương trình Python 3.x bên dưới: & NBSP;

    Python

    Is

    Đầu ra: & nbsp;

    1
    14
    >>> range[10]
    range[0, 10]
    
    0

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    0
    1
    23

    Khối khác không được thực thi trong Python 3.x trở xuống: & nbsp;

    Is

    1
    33
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    3
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    4
    1
    36
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    4
    1
    38
    1
    39

    Loại khác chỉ hữu ích nếu có điều kiện nếu có bên trong vòng lặp mà bằng cách nào đó phụ thuộc vào biến vòng lặp. Trong ví dụ sau, câu lệnh khác sẽ chỉ được thực thi nếu không có phần tử nào của mảng, tức là nếu câu lệnh có không được thực hiện cho bất kỳ lần lặp. Do đó, đối với mảng [1, 9, 8] IF được thực thi trong lần lặp thứ ba của vòng lặp và do đó cái khác có mặt sau khi vòng lặp cho vòng lặp bị bỏ qua. Trong trường hợp mảng [1, 3, 5] IF không được thực thi cho bất kỳ lần lặp nào và do đó khác sau khi vòng lặp được thực thi.

    1
    33
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    3
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    4
    1
    47
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    4
    1
    49
    1
    39

    Output: 

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number

    >>> range[10]
    range[0, 10]
    
    8
    >>> range[10]
    range[0, 10]
    
    9exercise, predict the output of the following program. 

    Khối khác chỉ sau khi/trong khi chỉ được thực thi khi vòng lặp không bị chấm dứt bởi một câu lệnh break.

    Khối khác được thực thi trong chương trình Python 3.x bên dưới: & NBSP;

    Python

    Is

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    8
    1
    66

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> range[10]
    range[0, 10]
    
    0

    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    0
    1
    13

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    7
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    8
    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    
    2
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    5
    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    
    6


    Bên cạnh tuyên bố

    1
    76 vừa được giới thiệu, Python sử dụng các câu lệnh điều khiển dòng chảy thông thường được biết từ các ngôn ngữ khác, với một số vòng xoắn.

    4.1.
    1
    77 Báo cáo Jor
    1
    77 Statements¶

    Có lẽ loại tuyên bố nổi tiếng nhất là tuyên bố

    1
    77. Ví dụ:

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    

    Mã sửa đổi một bộ sưu tập trong khi lặp lại trên cùng một bộ sưu tập có thể là khó khăn để có được đúng. Thay vào đó, thường là lặp đi về phía trước để lặp qua một bản sao của bộ sưu tập hoặc để tạo một bộ sưu tập mới:

    # Create a sample collection
    users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
    
    # Strategy:  Iterate over a copy
    for user, status in users.copy[].items[]:
        if status == 'inactive':
            del users[user]
    
    # Strategy:  Create a new collection
    active_users = {}
    for user, status in users.items[]:
        if status == 'active':
            active_users[user] = status
    

    4.3. Hàm
    1
    91
    The
    1
    91 Function¶

    Nếu bạn cần lặp lại một chuỗi các số, hàm tích hợp

    1
    91 có ích. Nó tạo ra các tiến trình số học:

    >>> for i in range[5]:
    ...     print[i]
    ...
    0
    1
    2
    3
    4
    

    Điểm cuối đã cho không bao giờ là một phần của chuỗi được tạo ra;

    1
    93 tạo ra 10 giá trị, các chỉ số pháp lý cho các mục có chuỗi độ dài 10. Có thể để phạm vi bắt đầu ở một số khác hoặc để chỉ định một mức tăng khác [thậm chí âm; đôi khi điều này được gọi là ‘bước,]:

    >>> list[range[5, 10]]
    [5, 6, 7, 8, 9]
    
    >>> list[range[0, 10, 3]]
    [0, 3, 6, 9]
    
    >>> list[range[-10, -100, -30]]
    [-10, -40, -70]
    

    Để lặp lại các chỉ số của một chuỗi, bạn có thể kết hợp

    1
    91 và
    1
    95 như sau:

    >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
    >>> for i in range[len[a]]:
    ...     print[i, a[i]]
    ...
    0 Mary
    1 had
    2 a
    3 little
    4 lamb
    

    Tuy nhiên, trong hầu hết các trường hợp như vậy, thuận tiện khi sử dụng hàm

    1
    96, xem các kỹ thuật lặp.Looping Techniques.

    Một điều kỳ lạ xảy ra nếu bạn chỉ in một phạm vi:

    >>> range[10]
    range[0, 10]
    

    Theo nhiều cách, đối tượng được trả lại bởi

    1
    91 hành xử như thể đó là một danh sách, nhưng thực tế nó không phải là. Đó là một đối tượng trả về các mục liên tiếp của chuỗi mong muốn khi bạn lặp lại nó, nhưng nó không thực sự tạo ra danh sách, do đó tiết kiệm không gian.

    Chúng tôi nói một đối tượng như vậy là có thể sử dụng được, nghĩa là phù hợp như một mục tiêu cho các chức năng và cấu trúc mong đợi một cái gì đó mà chúng có thể có được các mặt hàng liên tiếp cho đến khi nguồn cung bị cạn kiệt. Chúng tôi đã thấy rằng câu lệnh

    1
    88 là một cấu trúc như vậy, trong khi một ví dụ về một hàm có thể sử dụng được là
    1
    99:iterable, that is, suitable as a target for functions and constructs that expect something from which they can obtain successive items until the supply is exhausted. We have seen that the
    1
    88 statement is such a construct, while an example of a function that takes an iterable is
    1
    99:

    1
    0

    Sau đó, chúng ta sẽ thấy nhiều chức năng trả về Iterables và lấy Iterables làm đối số. Trong các cấu trúc dữ liệu chương, chúng tôi sẽ thảo luận chi tiết hơn về

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    00.Data Structures, we will discuss in more detail about
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    00.

    4.4. Các câu lệnh
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    01 và
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    02 và các điều khoản
    1
    80 trên Loops¶
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    01 and
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    02 Statements, and
    1
    80 Clauses on Loops¶

    Tuyên bố

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    01, như trong C, thoát ra khỏi vòng lặp trong cùng
    1
    88 hoặc
    1
    76.

    Các câu lệnh Loop có thể có mệnh đề

    1
    80; Nó được thực hiện khi vòng lặp chấm dứt thông qua sự cạn kiệt của điều đó [với
    1
    88] hoặc khi điều kiện trở thành sai [với
    1
    76], nhưng không phải khi vòng lặp bị chấm dứt bởi câu lệnh
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    01. Điều này được minh họa bằng vòng lặp sau, tìm kiếm số nguyên tố:

    1
    1

    .not the

    1
    77 statement.]

    Được sử dụng với một vòng lặp, mệnh đề

    1
    80 có điểm chung hơn với mệnh đề
    1
    80 của câu lệnh
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    16 so với câu lệnh
    1
    77 xảy ra. Để biết thêm về tuyên bố và ngoại lệ
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    16, hãy xem các ngoại lệ xử lý.Handling Exceptions.

    Tuyên bố

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    02, cũng mượn từ C, tiếp tục với lần lặp tiếp theo của vòng lặp:

    1
    2

    4.5.
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    24 Báo cáo Jor
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    24 Statements¶

    Tuyên bố

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    24 không làm gì cả. Nó có thể được sử dụng khi một câu lệnh được yêu cầu về mặt cú pháp nhưng chương trình không yêu cầu hành động. Ví dụ:

    1
    3

    Điều này thường được sử dụng để tạo các lớp tối thiểu:

    1
    4

    Một nơi khác

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    24 có thể được sử dụng là một người giữ chỗ cho một chức năng hoặc cơ thể có điều kiện khi bạn đang làm việc trên mã mới, cho phép bạn tiếp tục suy nghĩ ở cấp độ trừu tượng hơn.
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    24 âm thầm bị bỏ qua:

    1
    5

    4.6.
    1
    87 Báo cáo Jor
    1
    87 Statements¶

    Một câu lệnh

    1
    87 lấy một biểu thức và so sánh giá trị của nó với các mẫu liên tiếp được đưa ra dưới dạng một hoặc nhiều khối trường hợp. Điều này tương tự hời hợt với câu lệnh Switch trong C, Java hoặc JavaScript [và nhiều ngôn ngữ khác], nhưng nó giống với khớp mẫu phù hợp bằng các ngôn ngữ như Rust hoặc Haskell. Chỉ mẫu đầu tiên phù hợp được thực thi và nó cũng có thể trích xuất các thành phần [phần tử trình tự hoặc thuộc tính đối tượng] từ giá trị thành các biến.

    Hình thức đơn giản nhất so sánh giá trị chủ đề với một hoặc nhiều chữ:

    1
    6

    Lưu ý Khối cuối cùng: Tên biến có thể thay đổi

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    30 hoạt động như một ký tự đại diện và không bao giờ thất bại để phù hợp. Nếu không có trường hợp nào phù hợp, không có chi nhánh nào được thực hiện.

    Bạn có thể kết hợp một số chữ theo một mẫu bằng cách sử dụng

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    31 [về hoặc hoặc]:

    1
    7

    Các mẫu có thể trông giống như các bài tập giải nén và có thể được sử dụng để liên kết các biến:

    1
    8

    Nghiên cứu một cách cẩn thận! Mẫu đầu tiên có hai chữ, và có thể được coi là một phần mở rộng của mẫu theo nghĩa đen được hiển thị ở trên. Nhưng hai mẫu tiếp theo kết hợp một nghĩa đen và một biến, và biến liên kết một giá trị từ đối tượng [

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    32]. Mẫu thứ tư nắm bắt hai giá trị, làm cho nó tương tự về mặt khái niệm với gán giải nén
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    33.

    Nếu bạn đang sử dụng các lớp để cấu trúc dữ liệu của mình, bạn có thể sử dụng tên lớp theo sau là danh sách đối số giống như một hàm tạo, nhưng với khả năng nắm bắt các thuộc tính thành các biến:

    1
    9

    Bạn có thể sử dụng các tham số vị trí với một số lớp tích hợp cung cấp đặt hàng cho các thuộc tính của chúng [ví dụ: DataClasses]. Bạn cũng có thể xác định một vị trí cụ thể cho các thuộc tính trong các mẫu bằng cách đặt thuộc tính đặc biệt

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    34 trong các lớp của bạn. Nếu nó được đặt thành [[X X,

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    0

    Một cách được đề xuất để đọc các mẫu là xem chúng như một hình thức mở rộng của những gì bạn sẽ đặt ở bên trái của một bài tập, để hiểu các biến nào sẽ được đặt thành những gì. Chỉ các tên độc lập [như

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    36 ở trên] được gán cho một câu lệnh khớp. Các tên chấm chấm [như
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    38], tên thuộc tính [tên
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    39 và
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    40 ở trên] hoặc tên lớp [được công nhận bởi [[[]] bên cạnh chúng như
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    41 ở trên] không bao giờ được gán.

    Các mẫu có thể được lồng tùy ý. Ví dụ: nếu chúng ta có một danh sách ngắn các điểm, chúng ta có thể khớp nó như thế này:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    1

    Chúng ta có thể thêm một điều khoản

    1
    77 vào một mẫu, được gọi là một người bảo vệ. Nếu người bảo vệ sai,
    1
    87 tiếp tục thử khối trường hợp tiếp theo. Lưu ý rằng việc bắt giá trị xảy ra trước khi người bảo vệ được đánh giá:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    2

    Một số tính năng chính khác của câu lệnh này:

    • Giống như giải nén các bài tập, các mẫu Tuple và List có cùng một ý nghĩa và thực sự phù hợp với các chuỗi tùy ý. Một ngoại lệ quan trọng là họ không phù hợp với trình lặp hoặc dây.

    • Các mẫu chuỗi hỗ trợ mở rộng Giải nén:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      44 và
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      45 hoạt động tương tự như các bài tập giải nén. Tên sau
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      46 cũng có thể là
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      30, do đó
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      48 khớp với một chuỗi ít nhất hai mục mà không ràng buộc các mục còn lại.

    • Các mẫu ánh xạ:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      49 nắm bắt các giá trị
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      50 và
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      51 từ một từ điển. Không giống như các mẫu trình tự, các khóa phụ bị bỏ qua. Một việc giải nén như
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      52 cũng được hỗ trợ. [Nhưng
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      53 sẽ dư thừa, vì vậy nó không được phép.]

    • Tiểu nhà có thể được ghi lại bằng từ khóa

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      54:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      3

      sẽ nắm bắt phần tử thứ hai của đầu vào là

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      55 [miễn là đầu vào là một chuỗi hai điểm]

    • Hầu hết các chữ được so sánh bằng sự bình đẳng, tuy nhiên các singletons

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      56,
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      57 và
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      58 được so sánh bằng danh tính.

    • Các mẫu có thể sử dụng hằng số được đặt tên. Đây phải là những cái tên chấm để ngăn chúng được hiểu là biến bắt giữ:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      4

    Để giải thích chi tiết hơn và các ví dụ bổ sung, bạn có thể xem xét PEP 636 được viết theo định dạng hướng dẫn.PEP 636 which is written in a tutorial format.

    4.7. Xác định chức năng JoDefining Functions¶

    Chúng ta có thể tạo một chức năng viết chuỗi Fibonacci vào một ranh giới tùy ý:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    5

    Từ khóa

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    59 giới thiệu một định nghĩa chức năng. Nó phải được theo sau bởi tên hàm và danh sách dấu ngoặc đơn của các tham số chính thức. Các câu lệnh tạo thành phần thân của hàm bắt đầu ở dòng tiếp theo và phải được thụt vào.

    Câu lệnh đầu tiên của cơ thể chức năng có thể tùy ý là một chuỗi theo nghĩa đen; Chuỗi này theo nghĩa đen là chuỗi tài liệu của chức năng, hoặc DocString. . Nó thực hành tốt để bao gồm các tài liệu trong mã mà bạn viết, vì vậy hãy tạo thói quen cho nó.Documentation Strings.] There are tools which use docstrings to automatically produce online or printed documentation, or to let the user interactively browse through code; it’s good practice to include docstrings in code that you write, so make a habit of it.

    Việc thực hiện một hàm giới thiệu một bảng biểu tượng mới được sử dụng cho các biến cục bộ của hàm. Chính xác hơn, tất cả các bài tập biến trong một hàm lưu trữ giá trị trong bảng ký hiệu cục bộ; Trong khi các tham chiếu biến đổi đầu tiên trong bảng biểu tượng cục bộ, thì trong các bảng ký hiệu cục bộ của các hàm bao quanh, sau đó trong bảng biểu tượng toàn cầu và cuối cùng trong bảng các tên tích hợp. Do đó, các biến và biến toàn cầu của các hàm bao quanh không thể được gán trực tiếp một giá trị trong một hàm [trừ khi, đối với các biến toàn cầu, được đặt tên trong câu lệnh

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    60, hoặc, đối với các biến số của các hàm, được đặt tên trong câu lệnh
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    61], mặc dù chúng có thể là tham chiếu.

    Các tham số thực tế [đối số] cho một cuộc gọi hàm được giới thiệu trong bảng ký hiệu cục bộ của hàm được gọi là khi nó được gọi; Do đó, các đối số được truyền bằng cách sử dụng cuộc gọi theo giá trị [trong đó giá trị luôn là tham chiếu đối tượng, không phải là giá trị của đối tượng]. 1 Khi một hàm gọi hàm khác hoặc tự gọi theo cách đệ quy, một bảng ký hiệu cục bộ mới được tạo cho cuộc gọi đó.

    Một định nghĩa chức năng liên kết tên hàm với đối tượng hàm trong bảng ký hiệu hiện tại. Trình thông dịch nhận ra đối tượng được chỉ ra bởi tên đó là hàm do người dùng xác định. Các tên khác cũng có thể trỏ đến cùng đối tượng chức năng đó và cũng có thể được sử dụng để truy cập chức năng:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    6

    Đến từ các ngôn ngữ khác, bạn có thể phản đối rằng

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    62 không phải là một hàm mà là một thủ tục vì nó không trả về một giá trị. Trên thực tế, ngay cả các chức năng mà không có câu lệnh
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    63 trả về một giá trị, mặc dù là một câu nói khá nhàm chán. Giá trị này được gọi là
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    58 [nó là một tên tích hợp]. Viết giá trị
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    58 thường được trình thông dịch triệt tiêu nếu nó là giá trị duy nhất được viết. Bạn có thể thấy nó nếu bạn thực sự muốn sử dụng
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    66:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    7

    Thật đơn giản để viết một hàm trả về danh sách các số của loạt Fibonacci, thay vì in nó:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    8

    Ví dụ này, như thường lệ, chứng minh một số tính năng Python mới:

    • Câu lệnh

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      63 trả về với giá trị từ một hàm.
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      63 mà không có đối số biểu thức trả về
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      58. Rơi ra khỏi cuối một hàm cũng trả về
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      58.

    • Câu lệnh

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      71 gọi một phương thức của đối tượng danh sách
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      72. Một phương pháp là một hàm ‘thuộc về một đối tượng và được đặt tên là
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      73, trong đó
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      74 là một số đối tượng [đây có thể là một biểu thức] và
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      75 là tên của một phương thức được xác định bởi loại đối tượng. Các loại khác nhau xác định các phương pháp khác nhau. Các phương pháp của các loại khác nhau có thể có cùng tên mà không gây ra sự mơ hồ. . Nó thêm một yếu tố mới ở cuối danh sách. Trong ví dụ này, nó tương đương với
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      77, nhưng hiệu quả hơn.Classes] The method
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      76 shown in the example is defined for list objects; it adds a new element at the end of the list. In this example it is equivalent to
      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      77, but more efficient.

    4.8. Thêm về việc xác định chức năng JoMore on Defining Functions¶

    Cũng có thể xác định các chức năng với số lượng đối số thay đổi. Có ba hình thức, có thể được kết hợp.

    4.8.1. Giá trị đối số mặc định JoDefault Argument Values¶

    Biểu mẫu hữu ích nhất là chỉ định giá trị mặc định cho một hoặc nhiều đối số. Điều này tạo ra một hàm có thể được gọi với ít đối số hơn nó được xác định để cho phép. Ví dụ:

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    9

    Chức năng này có thể được gọi theo nhiều cách:

    • Chỉ đưa ra đối số bắt buộc:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      78

    • Đưa ra một trong những đối số tùy chọn:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      79

    • hoặc thậm chí đưa ra tất cả các lập luận:

      For List 1:
      list contains an even number
      
      For List 2:
      list does not contain an even number
      80

    Ví dụ này cũng giới thiệu từ khóa

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    81. Điều này kiểm tra xem một chuỗi có chứa một giá trị nhất định hay không.

    Các giá trị mặc định được đánh giá tại điểm định nghĩa hàm trong phạm vi xác định, do đó

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    0

    trong đó

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 và
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    46 là tùy chọn. Nếu được sử dụng, các ký hiệu này chỉ ra loại tham số bằng cách các đối số có thể được truyền đến hàm: chỉ có vị trí, vị trí hoặc từ khóa và chỉ từ khóa. Các tham số từ khóa cũng được gọi là tham số được đặt tên.

    4.8.3.1. Đối số về vị trí hoặc thông sốPositional-or-Keyword Arguments¶

    Nếu

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 và
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    46 không có trong định nghĩa hàm, các đối số có thể được truyền đến một hàm theo vị trí hoặc từ khóa.

    4.8.3.2. Tham số chỉ có vị tríPositional-Only Parameters¶

    Nhìn vào điều này chi tiết hơn một chút, có thể đánh dấu các tham số nhất định là chỉ có vị trí. Nếu chỉ có vị trí, các tham số có vấn đề về thứ tự và các tham số không thể được truyền bằng từ khóa. Các tham số chỉ có vị trí được đặt trước một

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 [slash phía trước].
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 được sử dụng để phân tách hợp lý các tham số chỉ có vị trí với phần còn lại của các tham số. Nếu không có
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 trong định nghĩa hàm, không có tham số chỉ có vị trí.

    Các tham số sau

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 có thể là từ vị trí hoặc từ khóa chỉ.

    4.8.3.3. Đối số chỉ dành cho từ khóaKeyword-Only Arguments¶

    Để đánh dấu các tham số là chỉ từ khóa, chỉ ra các tham số phải được truyền bằng đối số từ khóa, hãy đặt một

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    46 trong danh sách đối số ngay trước tham số chỉ từ khóa đầu tiên.

    4.8.3.4. Ví dụ chức năng JoFunction Examples¶

    Hãy xem xét các định nghĩa chức năng ví dụ sau đây chú ý đến các điểm đánh dấu

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 và
    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    46:

    >>> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    1

    Định nghĩa chức năng đầu tiên,

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    2

    Hàm thứ hai

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    3

    Hàm thứ ba

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    4

    Và lần cuối cùng sử dụng cả ba quy ước gọi trong cùng một định nghĩa chức năng:

    >>> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    5

    Cuối cùng, hãy xem xét định nghĩa chức năng này có sự va chạm tiềm năng giữa đối số vị trí

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    6

    Không có cuộc gọi nào có thể làm cho nó trả về

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    56 vì từ khóa
    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    7

    Nhưng sử dụng

    For List 1:
    list contains an even number
    
    For List 2:
    list does not contain an even number
    95 [đối số chỉ có vị trí], có thể vì nó cho phép
    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    8

    Nói cách khác, tên của các tham số chỉ có vị trí có thể được sử dụng trong

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> # Measure some strings:
    ... words = ['cat', 'window', 'defenestrate']
    >>> for w in words:
    ...     print[w, len[w]]
    ...
    cat 3
    window 6
    defenestrate 12
    
    9

    Theo hướng dẫn:

    • Sử dụng chỉ vị trí nếu bạn muốn tên của các tham số không có sẵn cho người dùng. Điều này rất hữu ích khi tên tham số không có ý nghĩa thực sự, nếu bạn muốn thực thi thứ tự của các đối số khi hàm được gọi hoặc nếu bạn cần lấy một số tham số vị trí và từ khóa tùy ý.

    • Sử dụng từ khóa chỉ khi tên có ý nghĩa và định nghĩa hàm dễ hiểu hơn bằng cách rõ ràng với tên hoặc bạn muốn ngăn người dùng dựa vào vị trí của đối số được truyền.

    • Đối với API, hãy sử dụng chỉ có vị trí để ngăn chặn các thay đổi API nếu tên tham số được sửa đổi trong tương lai.

    4.8.4. Danh sách lập luận tùy ýArbitrary Argument Lists¶

    Cuối cùng, tùy chọn ít được sử dụng nhất là chỉ định rằng một hàm có thể được gọi với số lượng đối số tùy ý. Những đối số này sẽ được kết thúc thành một tuple [xem các bộ dữ liệu và trình tự]. Trước khi có số lượng đối số, không có hoặc nhiều đối số bình thường hơn có thể xảy ra.Tuples and Sequences]. Before the variable number of arguments, zero or more normal arguments may occur.

    # Create a sample collection
    users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
    
    # Strategy:  Iterate over a copy
    for user, status in users.copy[].items[]:
        if status == 'inactive':
            del users[user]
    
    # Strategy:  Create a new collection
    active_users = {}
    for user, status in users.items[]:
        if status == 'active':
            active_users[user] = status
    
    0

    Thông thường, các đối số variadic này sẽ là lần cuối cùng trong danh sách các tham số chính thức, bởi vì chúng tìm ra tất cả các đối số đầu vào còn lại được truyền cho hàm. Bất kỳ tham số chính thức nào xảy ra sau tham số

    >>> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x >> x = int[input["Please enter an integer: "]]
    Please enter an integer: 42
    >>> if x 

    Bài Viết Liên Quan

    Chủ Đề