Bạn có thể quay lại trong vòng lặp for python không?

Câu lệnh return đó làm cho giá trị x (= 1) được trả về từ hàm. Nhưng hãy nhớ rằng return cũng gây ra thoát khỏi chức năng. Vì vậy, bất kỳ khối nào (vòng lặp for, vòng lặp while, if-else) nằm trong hàm cũng sẽ bị chấm dứt. Do đó, ở bước 3 của lần lặp đầu tiên, câu lệnh return gây ra thoát khỏi phương thức, do đó gây ra thoát khỏi vòng lặp for bên trong phương thức

Show

Nói một cách ẩn dụ, nếu bạn đang đi lang thang qua tất cả các phòng (khối/khối) trong nhà (phương pháp) của mình theo một số thứ tự, và đột nhiên bạn cần khẩn trương rời khỏi (return khỏi) ngôi nhà, thì tất cả các phòng mà bạn chưa ghé thăm (

Loại bỏ bốn khoảng trắng trước câu lệnh return khiến câu lệnh return không còn là một phần của vòng lặp, vì vậy nó chỉ gây ra thoát khỏi phương thức khi vòng lặp kết thúc

và nó tạo ra 80. 55 - tôi tin là điểm trung bình cho sinh viên đầu tiên. Sau đó, khi tôi nhận xét return total_class, nó đã hoạt động. điều này đặt ra câu hỏi - tại sao?

Cảm ơn

Câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của Python là thành phần chính của các hàm và. Bạn có thể sử dụng câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 để làm cho các hàm của bạn gửi các đối tượng Python trở lại mã người gọi. Các đối tượng này được gọi là giá trị trả về của hàm. Bạn có thể sử dụng chúng để thực hiện thêm tính toán trong các chương trình của mình

Sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 một cách hiệu quả là một kỹ năng cốt lõi nếu bạn muốn viết mã các hàm tùy chỉnh Pythonic và mạnh mẽ

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

  • Cách sử dụng câu lệnh Python
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 trong hàm của bạn
  • Cách trả về một hoặc nhiều giá trị từ hàm của bạn
  • Những phương pháp hay nhất cần quan sát khi sử dụng câu lệnh
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9

Với kiến ​​thức này, bạn sẽ có thể viết các hàm dễ đọc, dễ bảo trì và ngắn gọn hơn trong Python. Nếu bạn hoàn toàn chưa quen với các hàm Python, thì bạn có thể xem Xác định hàm Python của riêng bạn trước khi đi sâu vào hướng dẫn này

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

Bắt đầu với các hàm Python

Hầu hết các ngôn ngữ lập trình cho phép bạn gán tên cho một khối mã thực hiện tính toán cụ thể. Các khối mã được đặt tên này có thể được tái sử dụng nhanh chóng vì bạn có thể sử dụng tên của chúng để gọi chúng từ các vị trí khác nhau trong mã của mình

Các lập trình viên gọi các khối mã được đặt tên này là chương trình con, thói quen, thủ tục hoặc hàm tùy thuộc vào ngôn ngữ họ sử dụng. Trong một số ngôn ngữ, có sự khác biệt rõ ràng giữa một quy trình hoặc thủ tục và một chức năng

Đôi khi sự khác biệt đó lớn đến mức bạn cần sử dụng một từ khóa cụ thể để xác định một thủ tục hoặc chương trình con và một từ khóa khác để xác định một hàm. Ví dụ: ngôn ngữ lập trình Visual Basic sử dụng

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
4 và
>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
5 để phân biệt giữa hai

Nói chung, một thủ tục là một khối mã được đặt tên thực hiện một tập hợp các hành động mà không cần tính toán giá trị hoặc kết quả cuối cùng. Mặt khác, một hàm là một khối mã được đặt tên thực hiện một số hành động với mục đích tính toán giá trị hoặc kết quả cuối cùng, sau đó được gửi lại cho mã người gọi. Cả thủ tục và hàm đều có thể hành động dựa trên một tập hợp các giá trị đầu vào, thường được gọi là đối số

Trong Python, các loại khối mã được đặt tên này được gọi là hàm vì chúng luôn gửi lại giá trị cho người gọi. Tài liệu Python định nghĩa một hàm như sau

Một loạt các câu lệnh trả về một số giá trị cho người gọi. Nó cũng có thể được chuyển bằng 0 hoặc nhiều hơn có thể được sử dụng trong quá trình thực thi phần thân. ()

Mặc dù tài liệu chính thức nói rằng một hàm “trả về một số giá trị cho trình gọi”, nhưng bạn sẽ sớm thấy rằng các hàm có thể trả về bất kỳ đối tượng Python nào cho mã trình gọi

Nói chung, một hàm nhận các đối số (nếu có), thực hiện một số thao tác và trả về một giá trị (hoặc đối tượng). Giá trị mà hàm trả về cho người gọi thường được gọi là giá trị trả về của hàm. Tất cả các hàm Python đều có giá trị trả về, rõ ràng hoặc ẩn. Bạn sẽ đề cập đến sự khác biệt giữa giá trị trả về rõ ràng và tiềm ẩn sau trong hướng dẫn này

Để viết một hàm Python, bạn cần có một tiêu đề bắt đầu bằng từ khóa

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
6, theo sau là tên của hàm, một danh sách tùy chọn gồm các đối số được phân tách bằng dấu phẩy bên trong một cặp dấu ngoặc đơn bắt buộc và dấu hai chấm cuối cùng.

Thành phần thứ hai của hàm là khối mã hoặc phần thân của hàm. Python xác định các khối mã bằng cách sử dụng thay vì dấu ngoặc, từ khóa

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
7 và
>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
8, v.v. Vì vậy, để xác định một hàm trong Python, bạn có thể sử dụng cú pháp sau

def function_name(arg1, arg2,..., argN):
    # Function's code goes here...
    pass

Khi bạn đang mã hóa một hàm Python, bạn cần xác định tiêu đề bằng từ khóa

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
6, tên của hàm và danh sách các đối số trong ngoặc đơn. Lưu ý rằng danh sách các đối số là tùy chọn, nhưng dấu ngoặc đơn là bắt buộc về mặt cú pháp. Sau đó, bạn cần xác định khối mã của hàm, khối này sẽ bắt đầu một cấp độ thụt vào bên phải

Trong ví dụ trên, bạn sử dụng câu lệnh

>>> def get_even(numbers):
..     return [num for num in numbers if not num % 2]
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
0. Loại câu lệnh này hữu ích khi bạn cần một câu lệnh giữ chỗ trong mã của mình để làm cho nó đúng về mặt cú pháp, nhưng bạn không cần thực hiện bất kỳ hành động nào. Câu lệnh
>>> def get_even(numbers):
..     return [num for num in numbers if not num % 2]
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
0 còn được gọi là phép toán null vì chúng không thực hiện bất kỳ hành động nào

Ghi chú. Cú pháp đầy đủ để xác định các hàm và đối số của chúng nằm ngoài phạm vi của hướng dẫn này. Để có tài nguyên chuyên sâu về chủ đề này, hãy xem Xác định chức năng Python của riêng bạn

Để sử dụng một chức năng, bạn cần gọi nó. Một lệnh gọi hàm bao gồm tên của hàm theo sau là các đối số của hàm trong ngoặc đơn

function_name(arg1, arg2, ..., argN)

Bạn sẽ chỉ cần truyền đối số cho lệnh gọi hàm nếu hàm đó yêu cầu chúng. Mặt khác, dấu ngoặc đơn luôn được yêu cầu trong lệnh gọi hàm. Nếu bạn quên chúng, thì bạn sẽ không gọi hàm mà tham chiếu nó như một đối tượng hàm

Để làm cho các hàm của bạn trả về một giá trị, bạn cần sử dụng. Đó là những gì bạn sẽ trình bày từ thời điểm này trở đi

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

Hiểu câu lệnh >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9 của Python

Câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 trong Python là một câu lệnh đặc biệt mà bạn có thể sử dụng bên trong một hàm hoặc để gửi lại kết quả của hàm cho người gọi. Câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bao gồm phần tiếp theo là giá trị trả về tùy chọn

Giá trị trả về của hàm Python có thể là bất kỳ đối tượng Python nào. Mọi thứ trong Python đều là đối tượng. Vì vậy, các hàm của bạn có thể trả về các giá trị số (, , và giá trị), các tập hợp và trình tự của các đối tượng (các đối tượng _______18_______0,

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
1,
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
2 hoặc
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
3), các đối tượng, lớp, hàm và thậm chí cả các mô-đun hoặc gói do người dùng định nghĩa

Bạn có thể bỏ qua giá trị trả về của một hàm và sử dụng

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 trần mà không có giá trị trả về. Bạn cũng có thể bỏ qua toàn bộ câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Trong cả hai trường hợp, giá trị trả về sẽ là
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Trong hai phần tiếp theo, bạn sẽ trình bày những kiến ​​thức cơ bản về cách thức hoạt động của câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 và cách bạn có thể sử dụng nó để trả lại kết quả của hàm cho mã lệnh gọi

Tuyên bố rõ ràng >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9

Một câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng ngay lập tức chấm dứt thực thi hàm và gửi giá trị trả về trở lại mã người gọi. Để thêm một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng vào một hàm Python, bạn cần sử dụng
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 theo sau là một giá trị trả về tùy chọn

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42

Khi bạn xác định

>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
2, bạn thêm một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng (
>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
4) vào cuối khối mã của hàm.
>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
5 là giá trị trả về rõ ràng của
>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
2. Điều này có nghĩa là bất cứ khi nào bạn gọi
>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
2, hàm sẽ gửi lại
>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
5 cho người gọi

Ghi chú. Bạn có thể sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng có hoặc không có giá trị trả về. Nếu bạn xây dựng câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 mà không chỉ định giá trị trả về, thì bạn sẽ ngầm trả về
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Nếu bạn định nghĩa một hàm bằng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng có giá trị trả về rõ ràng, thì bạn có thể sử dụng giá trị trả về đó trong bất kỳ biểu thức nào

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47

>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
2 trả về một giá trị số, nên bạn có thể sử dụng giá trị đó trong biểu thức toán học hoặc bất kỳ loại biểu thức nào khác trong đó giá trị có ý nghĩa logic hoặc nhất quán. Đây là cách mã trình gọi có thể tận dụng giá trị trả về của hàm

Lưu ý rằng bạn chỉ có thể sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bên trong định nghĩa hàm hoặc phương thức. Nếu bạn sử dụng nó ở bất kỳ nơi nào khác, thì bạn sẽ nhận được một
>>> return_value = print("Hello, World")
Hello, World

>>> print(return_value)
None
5

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function

Khi bạn sử dụng

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bên ngoài một hàm hoặc phương thức, bạn sẽ nhận được thông báo
>>> return_value = print("Hello, World")
Hello, World

>>> print(return_value)
None
5 cho biết rằng câu lệnh không thể được sử dụng bên ngoài một hàm

Ghi chú. Các phương thức thông thường, phương thức lớp và phương thức tĩnh chỉ là các hàm trong ngữ cảnh của các lớp Python. Vì vậy, tất cả các khái niệm về câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 mà bạn sẽ trình bày cũng áp dụng cho chúng

Bạn có thể sử dụng bất kỳ đối tượng Python nào làm giá trị trả về. Vì mọi thứ trong Python đều là đối tượng, nên bạn có thể trả về chuỗi, danh sách, bộ dữ liệu, từ điển, hàm, đối tượng do người dùng định nghĩa và thậm chí cả mô-đun hoặc gói

Ví dụ: giả sử bạn cần viết một hàm lấy danh sách các số nguyên và trả về danh sách chỉ chứa các số chẵn trong danh sách ban đầu. Đây là một cách mã hóa chức năng này

>>>

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]

>>> return_value = print("Hello, World")
Hello, World

>>> print(return_value)
None
9 sử dụng khả năng hiểu danh sách để tạo danh sách lọc ra các số lẻ trong bản gốc
function_name(arg1, arg2, ..., argN)
00. Sau đó, hàm trả về danh sách kết quả chỉ chứa các số chẵn

Một thực tế phổ biến là sử dụng kết quả của một biểu thức làm giá trị trả về trong câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Để áp dụng ý này, bạn có thể viết lại
>>> return_value = print("Hello, World")
Hello, World

>>> print(return_value)
None
9 như sau

>>>

>>> def get_even(numbers):
..     return [num for num in numbers if not num % 2]
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]

Việc hiểu danh sách được đánh giá và sau đó hàm trả về với danh sách kết quả. Lưu ý rằng bạn chỉ có thể sử dụng trong câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Biểu thức khác với điều kiện hoặc vòng lặp like

Ghi chú. Mặc dù khả năng hiểu của

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
0 được xây dựng bằng cách sử dụng từ khóa
function_name(arg1, arg2, ..., argN)
05 và (tùy chọn)
function_name(arg1, arg2, ..., argN)
06, nhưng chúng được coi là biểu thức hơn là câu lệnh. Đó là lý do tại sao bạn có thể sử dụng chúng trong câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9

Ví dụ khác, giả sử bạn cần tính giá trị trung bình của một mẫu giá trị số. Để làm điều đó, bạn cần chia tổng các giá trị cho số lượng giá trị. Đây là một ví dụ sử dụng các chức năng tích hợp sẵn và

function_name(arg1, arg2, ..., argN)
09

>>>

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5

Trong

function_name(arg1, arg2, ..., argN)
10, bạn không sử dụng biến cục bộ để lưu kết quả phép tính. Thay vào đó, bạn sử dụng biểu thức trực tiếp làm giá trị trả về. Đầu tiên, Python đánh giá biểu thức
function_name(arg1, arg2, ..., argN)
11 và sau đó trả về kết quả đánh giá, trong trường hợp này là giá trị
function_name(arg1, arg2, ..., argN)
12

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

Ngụ ý >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9 Báo cáo

Hàm Python sẽ luôn có giá trị trả về. Không có khái niệm về thủ tục hay quy trình trong Python. Vì vậy, nếu bạn không rõ ràng sử dụng giá trị trả về trong câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 hoặc nếu bạn bỏ qua hoàn toàn câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, thì Python sẽ ngầm trả về giá trị mặc định cho bạn. Giá trị trả về mặc định đó sẽ luôn là
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Giả sử bạn đang viết một hàm cộng

function_name(arg1, arg2, ..., argN)
17 vào một số
function_name(arg1, arg2, ..., argN)
18, nhưng bạn quên cung cấp câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Trong trường hợp này, bạn sẽ nhận được một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 ngầm định sử dụng
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6 làm giá trị trả về

>>>

>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None

Nếu bạn không cung cấp một câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng với một giá trị trả về rõ ràng, thì Python sẽ cung cấp một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 ngầm định sử dụng
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6 làm giá trị trả về. Trong ví dụ trên,
function_name(arg1, arg2, ..., argN)
25 thêm
function_name(arg1, arg2, ..., argN)
17 vào
function_name(arg1, arg2, ..., argN)
18 và lưu trữ giá trị trong
function_name(arg1, arg2, ..., argN)
28 nhưng nó không trả về
function_name(arg1, arg2, ..., argN)
28. Đó là lý do tại sao bạn nhận được
function_name(arg1, arg2, ..., argN)
30 thay vì
function_name(arg1, arg2, ..., argN)
31. Để khắc phục sự cố, bạn cần phải
function_name(arg1, arg2, ..., argN)
32 hoặc trực tiếp
function_name(arg1, arg2, ..., argN)
33

Một ví dụ về hàm trả về

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6 là
function_name(arg1, arg2, ..., argN)
35. Mục tiêu của chức năng này là in các đối tượng vào tệp luồng văn bản, thường là đầu ra tiêu chuẩn (màn hình của bạn). Vì vậy, chức năng này không cần một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng bởi vì nó không trả về bất cứ điều gì hữu ích hoặc có ý nghĩa

>>>

>>> return_value = print("Hello, World")
Hello, World

>>> print(return_value)
None

Cuộc gọi đến

function_name(arg1, arg2, ..., argN)
35 in
function_name(arg1, arg2, ..., argN)
38 ra màn hình. Vì đây là mục đích của
function_name(arg1, arg2, ..., argN)
35, nên hàm không cần trả về bất kỳ thứ gì hữu ích, vì vậy bạn nhận được ___18_______6 làm giá trị trả về

Ghi chú. Trình thông dịch Python không hiển thị

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6. Vì vậy, để hiển thị giá trị trả về của
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6 trong một , bạn cần sử dụng rõ ràng
function_name(arg1, arg2, ..., argN)
35

Bất kể hàm của bạn dài và phức tạp như thế nào, bất kỳ hàm nào không có câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng hoặc hàm có câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 mà không có giá trị trả về, sẽ trả về
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Trả lại vs In

Nếu bạn đang làm việc trong một phiên tương tác, thì bạn có thể nghĩ rằng việc in một giá trị và trả về một giá trị là các thao tác tương đương. Hãy xem xét hai hàm sau và đầu ra của chúng

>>>

function_name(arg1, arg2, ..., argN)
0

Cả hai chức năng dường như làm điều tương tự. Trong cả hai trường hợp, bạn sẽ thấy

function_name(arg1, arg2, ..., argN)
38 được in trên màn hình của mình. Chỉ có một sự khác biệt tinh tế có thể nhìn thấy—dấu ngoặc đơn trong ví dụ thứ hai. Nhưng hãy xem điều gì sẽ xảy ra nếu bạn trả về một kiểu dữ liệu khác, chẳng hạn như một đối tượng
>>> def get_even(numbers):
..     return [num for num in numbers if not num % 2]
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
7

>>>

function_name(arg1, arg2, ..., argN)
1

Không có sự khác biệt có thể nhìn thấy bây giờ. Trong cả hai trường hợp, bạn có thể thấy

>>> def add_one(x):
..     # No return statement at all
..     result = x + 1
...

>>> value = add_one(5)
>>> value

>>> print(value)
None
5 trên màn hình của mình. Hành vi đó có thể gây nhầm lẫn nếu bạn mới bắt đầu với Python. Bạn có thể nghĩ rằng việc trả lại và in một giá trị là những hành động tương đương

Bây giờ, giả sử bạn đang tìm hiểu sâu hơn về Python và bạn đang bắt đầu viết tập lệnh đầu tiên của mình. Bạn mở một trình soạn thảo văn bản và gõ đoạn mã sau

function_name(arg1, arg2, ..., argN)
2

function_name(arg1, arg2, ..., argN)
50 lấy hai số, cộng chúng và trả về kết quả. Ở dòng 5, bạn gọi
function_name(arg1, arg2, ..., argN)
50 để tính tổng
function_name(arg1, arg2, ..., argN)
52 cộng với
function_name(arg1, arg2, ..., argN)
52. Vì bạn vẫn đang tìm hiểu sự khác biệt giữa trả về và in một giá trị, nên bạn có thể mong đợi tập lệnh của mình in
function_name(arg1, arg2, ..., argN)
54 ra màn hình. Tuy nhiên, đó không phải là điều xảy ra và bạn không nhận được gì trên màn hình của mình

Hãy thử nó ra một mình. Lưu tập lệnh của bạn vào tệp có tên

function_name(arg1, arg2, ..., argN)
55 và chạy tập lệnh đó từ dòng lệnh của bạn như sau

function_name(arg1, arg2, ..., argN)
3

Nếu bạn chạy

function_name(arg1, arg2, ..., argN)
55 từ dòng lệnh của mình thì bạn sẽ không thấy bất kỳ kết quả nào trên màn hình của mình. Đó là bởi vì khi bạn chạy tập lệnh, giá trị trả về của các hàm mà bạn gọi trong tập lệnh không được in ra màn hình giống như trong phiên tương tác

Nếu bạn muốn tập lệnh của mình hiển thị kết quả của việc gọi

function_name(arg1, arg2, ..., argN)
50 trên màn hình, thì bạn cần gọi rõ ràng
function_name(arg1, arg2, ..., argN)
35. Kiểm tra bản cập nhật sau của
function_name(arg1, arg2, ..., argN)
55

function_name(arg1, arg2, ..., argN)
4

Bây giờ, khi bạn chạy

function_name(arg1, arg2, ..., argN)
55, bạn sẽ thấy số
function_name(arg1, arg2, ..., argN)
54 trên màn hình của mình

Vì vậy, nếu bạn đang làm việc trong một phiên tương tác, thì Python sẽ hiển thị kết quả của bất kỳ lệnh gọi hàm nào trực tiếp trên màn hình của bạn. Nhưng nếu bạn đang viết một kịch bản và bạn muốn xem giá trị trả về của một hàm, thì bạn cần sử dụng rõ ràng

function_name(arg1, arg2, ..., argN)
35

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

Trả về nhiều giá trị

Bạn có thể sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 để trả về nhiều giá trị từ một hàm. Để làm điều đó, bạn chỉ cần cung cấp một số giá trị trả về được phân tách bằng dấu phẩy

Ví dụ: giả sử bạn cần viết một hàm lấy một mẫu dữ liệu số và trả về một bản tóm tắt các phép đo thống kê. Để mã hóa chức năng đó, bạn có thể sử dụng mô-đun tiêu chuẩn Python

function_name(arg1, arg2, ..., argN)
64, cung cấp một số hàm để tính toán thống kê toán học của dữ liệu số

Đây là một triển khai có thể có của chức năng của bạn

function_name(arg1, arg2, ..., argN)
5

Trong

function_name(arg1, arg2, ..., argN)
65, bạn tận dụng khả năng của Python để trả về nhiều giá trị trong một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 duy nhất bằng cách trả về giá trị trung bình, trung vị và chế độ của mẫu cùng một lúc. Lưu ý rằng, để trả về nhiều giá trị, bạn chỉ cần viết chúng trong danh sách được phân tách bằng dấu phẩy theo thứ tự bạn muốn trả về

Khi bạn đã mã hóa

function_name(arg1, arg2, ..., argN)
65, bạn có thể tận dụng một tính năng mạnh mẽ của Python được gọi là giải nén lặp lại để giải nén ba biện pháp thành ba biến riêng biệt hoặc bạn chỉ có thể lưu trữ mọi thứ trong một biến

>>>

function_name(arg1, arg2, ..., argN)
6

Tại đây, bạn giải nén ba giá trị trả về của

function_name(arg1, arg2, ..., argN)
65 thành các biến
function_name(arg1, arg2, ..., argN)
69,
function_name(arg1, arg2, ..., argN)
70 và
function_name(arg1, arg2, ..., argN)
71. Lưu ý rằng trong ví dụ trước, bạn lưu trữ tất cả các giá trị trong một biến duy nhất,
function_name(arg1, arg2, ..., argN)
72, hóa ra là một biến Python
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
1

Ghi chú. Bạn có thể xây dựng một

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
1 Python bằng cách chỉ gán một số giá trị được phân tách bằng dấu phẩy cho một biến duy nhất. Không cần sử dụng dấu ngoặc đơn để tạo
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
1. Đó là lý do tại sao nhiều giá trị trả lại được đóng gói trong một
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
1

Hàm dựng sẵn cũng là một ví dụ về hàm trả về nhiều giá trị. Hàm lấy hai số (không phức tạp) làm đối số và trả về hai số, thương của hai giá trị đầu vào và phần còn lại của phép chia

>>>

function_name(arg1, arg2, ..., argN)
7

Cuộc gọi đến ____14_______77 trả về một bộ chứa thương và phần còn lại là kết quả của việc chia hai số không phức tạp được cung cấp dưới dạng đối số. Đây là một ví dụ về hàm có nhiều giá trị trả về

Sử dụng câu lệnh >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9 của Python. Thực hành tốt nhất

Cho đến giờ, bạn đã nắm được những kiến ​​thức cơ bản về cách thức hoạt động của câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 trong Python. Bây giờ bạn đã biết cách viết các hàm trả về một hoặc nhiều giá trị cho người gọi. Ngoài ra, bạn đã học được rằng nếu bạn không thêm câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng với giá trị trả về rõ ràng vào một hàm nhất định, thì Python sẽ thêm câu lệnh đó cho bạn. Giá trị đó sẽ là
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Trong phần này, bạn sẽ đề cập đến một số ví dụ sẽ hướng dẫn bạn một tập hợp các phương pháp lập trình tốt để sử dụng hiệu quả câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Những thực hành này sẽ giúp bạn viết các hàm dễ đọc, dễ bảo trì, mạnh mẽ và hiệu quả hơn trong Python

Trả lại >>> def mean(sample): .. return sum(sample) / len(sample) ... >>> mean([1, 2, 3, 4]) 2.5 6 Rõ ràng

Một số lập trình viên dựa vào câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 ngầm mà Python thêm vào bất kỳ hàm nào mà không có hàm rõ ràng. Điều này có thể gây nhầm lẫn cho các nhà phát triển đến từ các ngôn ngữ lập trình khác trong đó một hàm không có giá trị trả về được gọi là một thủ tục

Có những tình huống mà bạn có thể thêm một

function_name(arg1, arg2, ..., argN)
86 rõ ràng vào các chức năng của mình. Tuy nhiên, trong các tình huống khác, bạn có thể dựa vào hành vi mặc định của Python

  • Nếu hàm của bạn thực hiện các hành động nhưng không có giá trị

    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 rõ ràng và hữu ích, thì bạn có thể bỏ qua việc trả về
    >>> def mean(sample):
    ..     return sum(sample) / len(sample)
    ...
    
    >>> mean([1, 2, 3, 4])
    2.5
    
    6 vì làm như vậy sẽ chỉ thừa và khó hiểu. Bạn cũng có thể sử dụng
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 trần mà không có giá trị trả về chỉ để làm rõ ý định quay lại từ hàm của bạn

  • Nếu hàm của bạn có nhiều câu lệnh

    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 và trả về
    >>> def mean(sample):
    ..     return sum(sample) / len(sample)
    ...
    
    >>> mean([1, 2, 3, 4])
    2.5
    
    6 là một tùy chọn hợp lệ, thì bạn nên xem xét việc sử dụng rõ ràng
    function_name(arg1, arg2, ..., argN)
    
    86 thay vì dựa vào hành vi mặc định của Python

Những phương pháp này có thể cải thiện khả năng đọc và khả năng bảo trì mã của bạn bằng cách truyền đạt rõ ràng ý định của bạn

Khi nói đến việc trả lại

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6, bạn có thể sử dụng một trong ba cách tiếp cận có thể

  1. Bỏ qua câu lệnh
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 và dựa vào hành vi mặc định trả về
    >>> def mean(sample):
    ..     return sum(sample) / len(sample)
    ...
    
    >>> mean([1, 2, 3, 4])
    2.5
    
    6
  2. Sử dụng
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 trần mà không có giá trị trả về, giá trị này cũng trả về
    >>> def mean(sample):
    ..     return sum(sample) / len(sample)
    ...
    
    >>> mean([1, 2, 3, 4])
    2.5
    
    6
  3. Trả lại
    >>> def mean(sample):
    ..     return sum(sample) / len(sample)
    ...
    
    >>> mean([1, 2, 3, 4])
    2.5
    
    6 một cách rõ ràng

Đây là cách nó hoạt động trong thực tế

>>>

function_name(arg1, arg2, ..., argN)
8

Việc có trả lại

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6 một cách rõ ràng hay không là quyết định cá nhân. Tuy nhiên, bạn nên cân nhắc rằng trong một số trường hợp, một
function_name(arg1, arg2, ..., argN)
86 rõ ràng có thể tránh được các vấn đề về khả năng bảo trì. Điều này đặc biệt đúng đối với các nhà phát triển đến từ các ngôn ngữ lập trình khác không hoạt động như Python.

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

Ghi nhớ giá trị trả về

Khi viết các hàm tùy chỉnh, bạn có thể vô tình quên trả về một giá trị từ một hàm. Trong trường hợp này, Python sẽ trả về

>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6 cho bạn. Điều này có thể gây ra các lỗi tinh vi mà nhà phát triển Python mới bắt đầu có thể khó hiểu và gỡ lỗi

Bạn có thể tránh vấn đề này bằng cách viết câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 ngay sau phần đầu của hàm. Sau đó, bạn có thể thực hiện lần thứ hai để viết phần thân của hàm. Đây là một mẫu mà bạn có thể sử dụng khi mã hóa các hàm Python của mình

function_name(arg1, arg2, ..., argN)
9

Nếu bạn đã quen với việc bắt đầu các chức năng của mình như thế này, thì rất có thể bạn sẽ không còn nhớ câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 nữa. Với phương pháp này, bạn có thể viết phần thân của hàm, kiểm tra nó và đổi tên các biến sau khi bạn biết rằng hàm đó hoạt động

Phương pháp này có thể tăng năng suất của bạn và làm cho các chức năng của bạn ít bị lỗi hơn. Nó cũng có thể giúp bạn tiết kiệm rất nhiều thời gian gỡ lỗi

Tránh các biểu thức phức tạp

Như bạn đã thấy trước đây, một phương pháp phổ biến là sử dụng kết quả của một biểu thức làm giá trị trả về trong các hàm Python. Nếu biểu thức mà bạn đang sử dụng trở nên quá phức tạp thì cách làm này có thể dẫn đến các hàm khó hiểu, khó gỡ lỗi và bảo trì

Ví dụ: nếu bạn đang thực hiện một phép tính phức tạp, thì sẽ dễ đọc hơn khi tính toán tăng dần kết quả cuối cùng bằng cách sử dụng các biến tạm thời có tên có ý nghĩa

Hãy xem xét hàm sau tính toán phương sai của một mẫu dữ liệu số

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
0

Cách diễn đạt mà bạn sử dụng ở đây khá phức tạp và khó hiểu. Cũng khó gỡ lỗi vì bạn đang thực hiện nhiều thao tác trong một biểu thức. Để khắc phục sự cố cụ thể này, bạn có thể tận dụng lợi thế của phương pháp phát triển gia tăng để cải thiện khả năng đọc của hàm

Hãy xem triển khai thay thế sau đây của

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
04

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
1

Trong lần triển khai thứ hai này của

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
04, bạn tính phương sai theo một số bước. Mỗi bước được biểu thị bằng một biến tạm thời có tên có ý nghĩa

Các biến tạm thời như

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
06,
function_name(arg1, arg2, ..., argN)
69 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
08 thường hữu ích khi gỡ lỗi mã của bạn. Ví dụ, nếu có vấn đề xảy ra với một trong số chúng, thì bạn có thể gọi cho
function_name(arg1, arg2, ..., argN)
35 để biết chuyện gì đang xảy ra trước khi câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 chạy

Nói chung, bạn nên tránh sử dụng các biểu thức phức tạp trong câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của mình. Thay vào đó, bạn có thể chia mã của mình thành nhiều bước và sử dụng các biến tạm thời cho từng bước. Sử dụng các biến tạm thời có thể giúp mã của bạn dễ gỡ lỗi, hiểu và bảo trì hơn

Trả về giá trị so với sửa đổi Globals

Các hàm không có câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng với giá trị trả về có ý nghĩa thường tạo thành các hành động có. Ví dụ, một tác dụng phụ có thể là in nội dung nào đó ra màn hình, sửa đổi một , cập nhật trạng thái của một đối tượng, v.v.

Sửa đổi các biến toàn cầu thường được coi là một thực hành lập trình xấu. Cũng giống như các chương trình có biểu thức phức tạp, các chương trình sửa đổi các biến toàn cục có thể khó gỡ lỗi, hiểu và bảo trì

Khi bạn sửa đổi một biến toàn cục, bạn có khả năng ảnh hưởng đến tất cả các hàm, lớp, đối tượng và bất kỳ phần nào khác của chương trình dựa trên biến toàn cục đó

Để hiểu một chương trình sửa đổi các biến toàn cục, bạn cần biết tất cả các phần của chương trình có thể xem, truy cập và thay đổi các biến đó. Vì vậy, thực hành tốt khuyên bạn nên viết các hàm độc lập nhận một số đối số và trả về một giá trị (hoặc các giá trị) hữu ích mà không gây ra bất kỳ tác dụng phụ nào đối với các biến toàn cục

Ngoài ra, các hàm có câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng trả về một giá trị có ý nghĩa sẽ dễ kiểm tra hơn các hàm sửa đổi hoặc cập nhật các biến toàn cục

Ví dụ sau đây cho thấy một hàm thay đổi một biến toàn cục. Hàm sử dụng , đây cũng được coi là một cách lập trình tồi trong Python

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
2

Trong ví dụ này, trước tiên bạn tạo một biến toàn cục,

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15, với giá trị ban đầu là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16. Bên trong
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
17, bạn sử dụng câu lệnh
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
14 để báo cho hàm rằng bạn muốn sửa đổi một biến toàn cục. Tuyên bố cuối cùng tăng
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15 bởi
function_name(arg1, arg2, ..., argN)
17

Kết quả của việc gọi

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
17 sẽ phụ thuộc vào giá trị ban đầu của
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15. Các giá trị ban đầu khác nhau cho
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15 sẽ tạo ra các kết quả khác nhau, do đó, kết quả của hàm không thể được kiểm soát bởi chính hàm đó

Để tránh loại hành vi này, bạn có thể viết một

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
17 độc lập nhận các đối số và trả về một giá trị nhất quán chỉ phụ thuộc vào các đối số đầu vào

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
3

Bây giờ, kết quả của việc gọi

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
17 chỉ phụ thuộc vào các đối số đầu vào hơn là giá trị ban đầu của
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15. Điều này làm cho chức năng mạnh mẽ hơn và dễ kiểm tra hơn

Ghi chú. Để hiểu rõ hơn về cách kiểm tra mã Python của bạn, hãy xem Phát triển dựa trên thử nghiệm với PyTest

Ngoài ra, khi bạn cần cập nhật

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15, bạn có thể thực hiện điều đó một cách rõ ràng bằng cách gọi tới ____30_______17. Bằng cách này, bạn sẽ có nhiều quyền kiểm soát hơn đối với những gì đang xảy ra với
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
15 trong toàn bộ mã của mình

Nói chung, nên tránh các hàm sửa đổi các biến toàn cục. Nếu có thể, hãy thử viết các hàm độc lập với câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng trả về một giá trị nhất quán và có ý nghĩa

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

Sử dụng >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9 Với câu điều kiện

Các hàm Python không bị hạn chế chỉ có một câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Nếu một hàm đã cho có nhiều hơn một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, thì câu lệnh đầu tiên gặp phải sẽ xác định điểm kết thúc quá trình thực thi của hàm và cả giá trị trả về của nó

Một cách phổ biến để viết các hàm có nhiều câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 là sử dụng các câu lệnh điều kiện cho phép bạn cung cấp các câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 khác nhau tùy thuộc vào kết quả đánh giá một số điều kiện

Giả sử bạn cần viết mã một hàm nhận vào một số và trả về giá trị tuyệt đối của nó. Nếu số lớn hơn

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16, thì bạn sẽ trả về cùng một số. Nếu số nhỏ hơn
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16, thì bạn sẽ trả về giá trị ngược lại hoặc giá trị không âm

Đây là một triển khai khả thi cho chức năng này

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
4

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
38 có hai câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng, mỗi câu lệnh được bao bọc trong câu lệnh
function_name(arg1, arg2, ..., argN)
06 của chính nó. Nó cũng có một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 ngầm. Nếu
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
42 lại là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16, thì cả hai điều kiện đều không đúng và hàm kết thúc mà không nhấn bất kỳ câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng nào. Khi điều này xảy ra, bạn sẽ tự động nhận được
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Hãy xem cuộc gọi sau tới

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
38 bằng cách sử dụng
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16 làm đối số

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
5

Khi bạn gọi

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
38 sử dụng
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16 làm đối số, kết quả là bạn nhận được
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6. Đó là bởi vì luồng thực thi đi đến cuối hàm mà không đi đến bất kỳ câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 rõ ràng nào. Thật không may, giá trị tuyệt đối của
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16 là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16, không phải
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
6

Để khắc phục sự cố này, bạn có thể thêm câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 thứ ba, hoặc trong mệnh đề
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
56 mới hoặc trong mệnh đề cuối cùng
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
57

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
6

Bây giờ,

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
38 kiểm tra mọi điều kiện có thể,
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
59,
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
60 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
61. Mục đích của ví dụ này là để chỉ ra rằng khi bạn đang sử dụng các câu lệnh có điều kiện để cung cấp nhiều câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, bạn cần đảm bảo rằng mọi tùy chọn có thể có câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của riêng nó. Nếu không, chức năng của bạn sẽ có một lỗi ẩn

Cuối cùng, bạn có thể triển khai

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
38 theo cách ngắn gọn, hiệu quả và Pythonic hơn bằng cách sử dụng một câu lệnh
function_name(arg1, arg2, ..., argN)
06

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
7

Trong trường hợp này, hàm của bạn chạm vào câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 đầu tiên nếu
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
60. Trong tất cả các trường hợp khác, cho dù là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
59 hay
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
61, nó chạm vào câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 thứ hai. Với triển khai mới này, chức năng của bạn trông tốt hơn rất nhiều. Nó dễ đọc hơn, súc tích và hiệu quả hơn

Ghi chú. Có một hàm Python tích hợp tiện lợi được gọi để tính giá trị tuyệt đối của một số. Hàm trong ví dụ trên chỉ nhằm mục đích minh họa cho điểm đang thảo luận

Nếu bạn đang sử dụng câu lệnh

function_name(arg1, arg2, ..., argN)
06 để cung cấp một số câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, thì bạn không cần mệnh đề
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
57 để bao hàm điều kiện cuối cùng. Chỉ cần thêm một câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 vào cuối khối mã của hàm và ở mức thụt lề đầu tiên

Trả lại >>> def return_42(): .. return 42 # An explicit return statement ... >>> return_42() # The caller code gets 42 42 76 hoặc >>> def return_42(): .. return 42 # An explicit return statement ... >>> return_42() # The caller code gets 42 42 77

Một trường hợp sử dụng phổ biến khác cho sự kết hợp của các câu lệnh

function_name(arg1, arg2, ..., argN)
06 và
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 là khi bạn đang mã hóa một vị ngữ hoặc hàm có giá trị Boolean. Loại hàm này trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 hoặc
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77 theo một điều kiện nhất định

Ví dụ: giả sử bạn cần viết một hàm nhận vào hai số nguyên,

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83, rồi trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 nếu
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 chia hết cho
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83. Nếu không, hàm sẽ trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77. Đây là một triển khai có thể

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
8

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
88 trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 nếu phần còn lại của phép chia
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 cho
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83 bằng với
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16. Nếu không, nó sẽ trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77. Lưu ý rằng trong Python, giá trị
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16 là , vì vậy bạn cần sử dụng giá trị để phủ định giá trị thực của điều kiện

Đôi khi bạn sẽ viết các hàm vị ngữ liên quan đến các toán tử như sau

  • >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    96,
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    97,
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    98,
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    99,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    00 và
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    01
  • >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    02
  • >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    03
  • >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    95

Trong những trường hợp này, bạn có thể trực tiếp sử dụng biểu thức Boolean trong câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của mình. Điều này là có thể bởi vì các toán tử này trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 hoặc
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77. Theo ý tưởng này, đây là một triển khai mới của
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
88

>>>

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
9

Nếu

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 chia hết cho
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83, thì
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
11 trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
16, điều này sai trong Python. Vì vậy, để trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76, bạn cần sử dụng toán tử
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
95

Ghi chú. Python tuân theo một bộ quy tắc để xác định giá trị thật của một đối tượng

Ví dụ, các đối tượng sau đây là

  • Các hằng số như
    >>> def mean(sample):
    ..     return sum(sample) / len(sample)
    ...
    
    >>> mean([1, 2, 3, 4])
    2.5
    
    6 và
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    77
  • Các loại số có giá trị bằng 0 như
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    16,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    18,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    19, và
  • Các dãy và tập rỗng như
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    22,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    23,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    24,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    25,
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    26 và
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    27
  • Các đối tượng triển khai với giá trị trả về là
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    77 hoặc với giá trị trả về là
    >>> def return_42():
    ..     return 42  # An explicit return statement
    ...
    
    >>> return_42()  # The caller code gets 42
    42
    
    16

Bất kỳ đối tượng nào khác sẽ được coi là trung thực

Mặt khác, nếu bạn cố gắng sử dụng các điều kiện liên quan đến các toán tử Boolean như

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
32 và theo cách bạn đã thấy trước đó, thì các hàm vị ngữ của bạn sẽ không hoạt động chính xác. Đó là bởi vì các toán tử này hoạt động khác nhau. Chúng trả về một trong các toán hạng trong điều kiện thay vì
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 hoặc
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
0

Nói chung,

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
33 trả về toán hạng sai đầu tiên hoặc toán hạng cuối cùng. Mặt khác,
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
32 trả về toán hạng thực đầu tiên hoặc toán hạng cuối cùng. Vì vậy, để viết một vị ngữ liên quan đến một trong các toán tử này, bạn sẽ cần sử dụng một câu lệnh
function_name(arg1, arg2, ..., argN)
06 rõ ràng hoặc gọi hàm tích hợp sẵn

Giả sử bạn muốn viết một hàm vị từ nhận hai giá trị và trả về

>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 nếu cả hai đều đúng và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77 nếu ngược lại. Đây là cách tiếp cận đầu tiên của bạn với chức năng này

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
1

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
33 trả về toán hạng thay vì
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 hoặc
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77, hàm của bạn không hoạt động chính xác. Có ít nhất ba khả năng để khắc phục sự cố này

  1. Một tuyên bố rõ ràng
    function_name(arg1, arg2, ..., argN)
    
    06
  2. MỘT
  3. Hàm Python tích hợp sẵn
    >>> num = return_42()
    >>> num
    42
    
    >>> return_42() * 2
    84
    
    >>> return_42() + 5
    47
    
    39

Nếu bạn sử dụng cách tiếp cận đầu tiên, thì bạn có thể viết

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
47 như sau

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
2

Câu lệnh

function_name(arg1, arg2, ..., argN)
06 kiểm tra xem
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83 có đúng không. Nếu vậy, thì
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
47 trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76. Nếu không, nó sẽ trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77

Mặt khác, nếu bạn sử dụng biểu thức điều kiện Python hoặc toán tử bậc ba, thì bạn có thể viết hàm vị ngữ của mình như sau

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
3

Tại đây, bạn sử dụng biểu thức điều kiện để cung cấp giá trị trả về cho

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
47. Biểu thức điều kiện được đánh giá là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 nếu cả
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83 đều đúng. Nếu không, kết quả cuối cùng là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77

Cuối cùng, nếu bạn sử dụng

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
39, thì bạn có thể mã
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
47 như sau

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
4

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
39 trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 nếu
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
82 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
83 là đúng và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77 nếu ngược lại. Tùy bạn sử dụng cách tiếp cận nào để giải quyết vấn đề này. Tuy nhiên, giải pháp thứ hai có vẻ dễ đọc hơn. Bạn nghĩ sao?

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

Vòng lặp ngắn mạch

Một câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bên trong một vòng lặp thực hiện một số kiểu đoản mạch. Nó phá vỡ việc thực thi vòng lặp và làm cho hàm trả về ngay lập tức. Để hiểu rõ hơn về hành vi này, bạn có thể viết một hàm mô phỏng
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
67. Hàm tích hợp này nhận một lần lặp và trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76 nếu ít nhất một trong số các mục của nó là trung thực

Để giả lập

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
67, bạn có thể viết mã một hàm như sau

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
5

Nếu bất kỳ

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
70 nào trong
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
71 là đúng, thì luồng thực thi sẽ đi vào khối
function_name(arg1, arg2, ..., argN)
06. Câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 ngắt vòng lặp và trả về ngay lập tức với giá trị trả về là
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
76. Nếu không có giá trị nào trong
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
71 là đúng, thì
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
76 trả về
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77

Chức năng này thực hiện đánh giá ngắn mạch. Ví dụ: giả sử bạn vượt qua một lần lặp có chứa một triệu mục. Nếu mục đầu tiên trong lần lặp đó xảy ra là đúng, thì vòng lặp chỉ chạy một lần chứ không phải một triệu lần. Điều này có thể giúp bạn tiết kiệm rất nhiều thời gian xử lý khi chạy mã của mình

Điều quan trọng cần lưu ý là để sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bên trong một vòng lặp, bạn cần bọc câu lệnh đó trong một câu lệnh
function_name(arg1, arg2, ..., argN)
06. Nếu không, vòng lặp sẽ luôn bị ngắt trong lần lặp đầu tiên

Nhận biết mã chết

Ngay khi một hàm chạm vào câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, nó sẽ kết thúc mà không thực thi bất kỳ mã nào tiếp theo. Do đó, mã xuất hiện sau câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của hàm thường được gọi là mã chết. Trình thông dịch Python hoàn toàn bỏ qua mã chết khi chạy các chức năng của bạn. Vì vậy, có loại mã đó trong một chức năng là vô ích và khó hiểu

Xem xét hàm sau đây, hàm này thêm mã sau câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của nó

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
6

Câu lệnh

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
83 trong ví dụ này sẽ không bao giờ thực thi vì câu lệnh đó xuất hiện sau câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của hàm. Xác định mã chết và loại bỏ nó là một cách thực hành tốt mà bạn có thể áp dụng để viết các chức năng tốt hơn

Cần lưu ý rằng nếu bạn đang sử dụng câu lệnh có điều kiện để cung cấp nhiều câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, thì bạn có thể có mã sau câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 sẽ không chết miễn là nó nằm ngoài câu lệnh
function_name(arg1, arg2, ..., argN)
06

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
7

Mặc dù lệnh gọi tới

function_name(arg1, arg2, ..., argN)
35 diễn ra sau câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, nhưng đó không phải là mã chết. Khi
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
90 được đánh giá thành
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
77, lệnh gọi
function_name(arg1, arg2, ..., argN)
35 được chạy và bạn nhận được ____14_______38 được in ra màn hình của bạn

Trả lại nhiều đối tượng được đặt tên

Khi bạn đang viết một hàm trả về nhiều giá trị trong một câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, bạn có thể cân nhắc sử dụng một đối tượng
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
95 để làm cho hàm của bạn dễ đọc hơn.
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 là một lớp tập hợp trả về một lớp con của
>>> def mean(sample):
..     return sum(sample) / len(sample)
...

>>> mean([1, 2, 3, 4])
2.5
1 có các trường hoặc thuộc tính. Bạn có thể truy cập các thuộc tính đó bằng cách sử dụng hoặc

Trình khởi tạo của

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 nhận một số đối số. Tuy nhiên, để bắt đầu sử dụng
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 trong mã của bạn, bạn chỉ cần biết về hai mã đầu tiên

  1. >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    00 giữ tên của lớp giống bộ dữ liệu mà bạn đang tạo. Nó cần phải là một chuỗi
  2. >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    01 giữ tên của các trường hoặc thuộc tính của lớp giống bộ. Nó có thể là một chuỗi các chuỗi, chẳng hạn như
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    02 hoặc một chuỗi với mỗi tên được phân tách bằng khoảng trắng hoặc dấu phẩy, chẳng hạn như
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    03 hoặc
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    04

Sử dụng

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 khi bạn cần trả về nhiều giá trị có thể làm cho hàm của bạn dễ đọc hơn đáng kể mà không cần tốn quá nhiều công sức. Xem xét bản cập nhật sau của
function_name(arg1, arg2, ..., argN)
65 bằng cách sử dụng
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 làm giá trị trả về

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
8

Bên trong

function_name(arg1, arg2, ..., argN)
65, bạn tạo một
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 có tên là
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
10. Đối tượng này có thể có các thuộc tính được đặt tên mà bạn có thể truy cập bằng cách sử dụng ký hiệu dấu chấm hoặc bằng cách sử dụng thao tác lập chỉ mục. Trong ví dụ này, các thuộc tính đó là
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
11,
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
12 và
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
13

Bạn có thể tạo một đối tượng

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
10 và sử dụng nó làm giá trị trả về. Để làm điều đó, bạn cần khởi tạo
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
10 giống như bạn làm với bất kỳ lớp Python nào. Lưu ý rằng bạn cần cung cấp một giá trị cụ thể cho từng thuộc tính được đặt tên, giống như bạn đã làm trong câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của mình

Đây là cách hoạt động của

function_name(arg1, arg2, ..., argN)
65

>>>

>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
9

Khi bạn gọi

function_name(arg1, arg2, ..., argN)
65 với một mẫu dữ liệu số, bạn sẽ nhận được một đối tượng
>>> num = return_42()
>>> num
42

>>> return_42() * 2
84

>>> return_42() + 5
47
96 chứa giá trị trung bình, trung vị và kiểu của mẫu. Lưu ý rằng bạn có thể truy cập từng phần tử của bộ dữ liệu bằng cách sử dụng ký hiệu dấu chấm hoặc thao tác lập chỉ mục

Cuối cùng, bạn cũng có thể sử dụng thao tác giải nén lặp lại để lưu trữ từng giá trị trong biến độc lập của chính nó

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

Chức năng trả về. đóng cửa

Trong Python, các chức năng là. Đối tượng hạng nhất là một đối tượng có thể được gán cho một biến, được truyền dưới dạng đối số cho hàm hoặc được sử dụng làm giá trị trả về trong hàm. Vì vậy, bạn có thể sử dụng một đối tượng hàm làm giá trị trả về trong bất kỳ câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 nào

Một hàm lấy một hàm làm đối số, trả về một hàm dưới dạng kết quả hoặc cả hai là một hàm bậc cao hơn. A là một ví dụ phổ biến về hàm bậc cao hơn trong Python. Loại hàm này nhận một số đối số và trả về một hàm bên trong. Hàm bên trong thường được gọi là bao đóng

Một bao đóng mang thông tin về phạm vi thực hiện kèm theo của nó. Điều này cung cấp một cách để giữ lại thông tin trạng thái giữa các lần gọi hàm. Các hàm đóng của nhà máy rất hữu ích khi bạn cần viết mã dựa trên khái niệm đánh giá lười biếng hoặc chậm trễ

Giả sử bạn cần viết một hàm trợ giúp nhận vào một số và trả về kết quả nhân số đó với một thừa số đã cho. Bạn có thể mã chức năng đó như sau

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
0

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
21 lấy
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 và
>>> def return_42():
..     return 42  # An explicit return statement
...

>>> return_42()  # The caller code gets 42
42
42 làm đối số và trả lại sản phẩm của họ. Vì
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 hiếm khi thay đổi trong ứng dụng của bạn, nên bạn cảm thấy khó chịu khi cung cấp cùng một hệ số trong mọi lệnh gọi hàm. Vì vậy, bạn cần một cách để giữ lại trạng thái hoặc giá trị của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 giữa các lần gọi đến
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
21 và chỉ thay đổi nó khi cần. Để giữ lại giá trị hiện tại của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 giữa các cuộc gọi, bạn có thể sử dụng một bao đóng

Việc triển khai sau đây của

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
21 sử dụng một bao đóng để giữ lại giá trị của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 giữa các cuộc gọi

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
1

Bên trong

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
21, bạn định nghĩa một hàm bên trong có tên là
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
31 và trả về nó mà không cần gọi nó. Đối tượng hàm mà bạn trả về là một bao đóng giữ lại thông tin về trạng thái của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22. Nói cách khác, nó ghi nhớ giá trị của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 giữa các cuộc gọi. Đó là lý do tại sao
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
34 nhớ rằng
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 bằng với
function_name(arg1, arg2, ..., argN)
52 và
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
37 nhớ rằng
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
22 bằng với
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
39

Lưu ý rằng bạn có thể tự do sử dụng lại

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
34 và
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
37 vì họ không quên thông tin trạng thái tương ứng của họ

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

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
42 để tạo bao đóng. Đôi khi, việc sử dụng hàm
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
42 có thể làm cho nhà máy đóng cửa của bạn ngắn gọn hơn. Đây là một triển khai thay thế của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
21 bằng cách sử dụng hàm
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
42

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
2

Việc triển khai này hoạt động giống như ví dụ ban đầu. Trong trường hợp này, việc sử dụng hàm

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
42 cung cấp một cách nhanh chóng và ngắn gọn để viết mã
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
21

Chức năng lấy và trả về. người trang trí

Một cách khác để sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 để trả về các đối tượng hàm là viết các hàm trang trí. Hàm trang trí lấy một đối tượng hàm làm đối số và trả về một đối tượng hàm. Trình trang trí xử lý chức năng được trang trí theo một cách nào đó và trả lại hoặc thay thế nó bằng một chức năng hoặc đối tượng có thể gọi khác

Trình trang trí rất hữu ích khi bạn cần thêm logic bổ sung vào các chức năng hiện có mà không cần sửa đổi chúng. Ví dụ: bạn có thể mã hóa một trình trang trí để ghi nhật ký các lệnh gọi hàm, xác thực các đối số cho một hàm, đo thời gian thực hiện của một hàm đã cho, v.v.

Ví dụ sau đây cho thấy một hàm trang trí mà bạn có thể sử dụng để biết được thời gian thực hiện của một hàm Python đã cho

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
3

Cú pháp

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
49 phía trên tiêu đề của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50 tương đương với biểu thức
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
51. Trong trường hợp này, bạn có thể nói rằng
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
52 đang trang trí cho
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50

Python chạy các hàm trang trí ngay khi bạn nhập hoặc chạy mô-đun hoặc tập lệnh. Vì vậy, khi bạn gọi

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50, bạn thực sự đang gọi giá trị trả về của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
52, là đối tượng hàm
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
56. Cuộc gọi đến
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50 được trang trí sẽ trả về giá trị trung bình của mẫu và cũng sẽ đo thời gian thực hiện của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50 ban đầu

Trong trường hợp này, bạn sử dụng để đo thời gian thực hiện bên trong decorator.

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
59 sống trong một mô-đun có tên là
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
61 cung cấp một tập hợp các chức năng liên quan đến thời gian.
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
59 trả về thời gian tính bằng giây vì dưới dạng số dấu phẩy động. Sự khác biệt giữa thời gian trước và sau khi gọi đến
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50 sẽ cho bạn ý tưởng về thời gian thực hiện chức năng

Ghi chú. Trong

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
50, bạn sử dụng chức năng tạm dừng việc thực thi mã gọi trong một số giây nhất định. Để hiểu rõ hơn về cách sử dụng
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
66, hãy xem Python sleep(). Cách thêm độ trễ thời gian vào mã của bạn

Các ví dụ phổ biến khác về trình trang trí trong Python là

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
67,
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
68 và. Nếu bạn muốn tìm hiểu sâu hơn về các công cụ trang trí Python, hãy xem Primer on Python Decorators. Bạn cũng có thể xem Python Decorators 101

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

Trả về các đối tượng do người dùng định nghĩa. Mô hình nhà máy

Câu lệnh Python

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 cũng có thể trả về. Nói cách khác, bạn có thể sử dụng các đối tượng tùy chỉnh của riêng mình làm giá trị trả về trong một hàm. Một trường hợp sử dụng phổ biến cho khả năng này là mẫu xuất xưởng

Mẫu xuất xưởng xác định một giao diện để tạo các đối tượng một cách nhanh chóng nhằm đáp ứng các điều kiện mà bạn không thể đoán trước khi viết chương trình. Bạn có thể triển khai một nhà máy gồm các đối tượng do người dùng định nghĩa bằng cách sử dụng hàm nhận một số đối số khởi tạo và trả về các đối tượng khác nhau tùy theo đầu vào cụ thể

Giả sử bạn đang viết một ứng dụng vẽ tranh. Bạn cần nhanh chóng tạo các hình dạng khác nhau để đáp ứng lựa chọn của người dùng. Chương trình của bạn sẽ có hình vuông, hình tròn, hình chữ nhật, v.v. Để tạo các hình dạng đó một cách nhanh chóng, trước tiên bạn cần tạo các lớp hình dạng mà bạn sẽ sử dụng

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
4

Sau khi bạn có một lớp cho mỗi hình dạng, bạn có thể viết một hàm lấy tên của hình dạng dưới dạng một chuỗi và danh sách đối số tùy chọn (

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
71) và đối số từ khóa (
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
72) để tạo và khởi tạo hình dạng một cách nhanh chóng

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
5

Hàm này tạo một thể hiện của hình dạng cụ thể và trả về cho người gọi. Bây giờ bạn có thể sử dụng

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
73 để tạo các đối tượng có hình dạng khác nhau để đáp ứng nhu cầu của người dùng của bạn

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
6

Nếu bạn gọi

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
73 với tên của hình dạng được yêu cầu là một chuỗi, thì bạn sẽ nhận được một phiên bản mới của hình dạng khớp với
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
75 mà bạn vừa chuyển đến nhà máy

Sử dụng >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9 trong khối >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 77 … >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 78

Khi bạn sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bên trong mệnh đề with, mệnh đề
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
78 đó luôn được thực hiện trước câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9. Điều này đảm bảo rằng mã trong mệnh đề
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
78 sẽ luôn chạy. Kiểm tra ví dụ sau

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
7

Khi bạn gọi

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
85, bạn nhận được ________86 được chuyển đổi thành số dấu phẩy động hoặc đối tượng chuỗi. Trước khi làm điều đó, hàm của bạn sẽ chạy mệnh đề
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
78 và in một thông báo ra màn hình của bạn. Bất kỳ mã nào bạn thêm vào mệnh đề
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
78 sẽ được thực thi trước khi hàm chạy câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của nó

Sử dụng >>> return 42 File "<stdin>", line 1 SyntaxError: 'return' outside function 9 trong Hàm tạo

Hàm Python có a trong phần thân của nó là hàm tạo. Khi bạn gọi một hàm tạo, nó sẽ trả về một. Vì vậy, bạn có thể nói rằng hàm tạo là một nhà máy tạo

Bạn có thể sử dụng câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 bên trong hàm tạo để chỉ ra rằng trình tạo đã hoàn tất. Câu lệnh
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 sẽ làm cho trình tạo tăng một. Giá trị trả về sẽ được truyền dưới dạng đối số cho trình khởi tạo của
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
94 và sẽ được gán cho thuộc tính
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
96 của nó

Đây là một máy phát điện tạo ra

function_name(arg1, arg2, ..., argN)
17 và
function_name(arg1, arg2, ..., argN)
52 theo yêu cầu và sau đó trả về
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
39

>>>

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
8

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
00 trả về một đối tượng trình tạo mang lại
function_name(arg1, arg2, ..., argN)
17 và
function_name(arg1, arg2, ..., argN)
52 theo yêu cầu. Để truy xuất từng số từ đối tượng trình tạo, bạn có thể sử dụng , đây là hàm tích hợp để truy xuất mục tiếp theo từ trình tạo Python

Hai cuộc gọi đầu tiên đến

>>> def get_even(numbers):
..     even_nums = [num for num in numbers if not num % 2]
..     return even_nums
...

>>> get_even([1, 2, 3, 4, 5, 6])
[2, 4, 6]
03 lần lượt truy xuất
function_name(arg1, arg2, ..., argN)
17 và
function_name(arg1, arg2, ..., argN)
52. Trong cuộc gọi thứ ba, trình tạo đã cạn kiệt và bạn nhận được một
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
94. Lưu ý rằng giá trị trả về của hàm tạo (_______0_______39) trở thành thuộc tính
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
96 của đối tượng
>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
94

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

Phần kết luận

Câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9 của Python cho phép bạn gửi bất kỳ đối tượng Python nào từ các chức năng tùy chỉnh của bạn trở lại mã người gọi. Câu lệnh này là một phần cơ bản của bất kỳ hàm hoặc phương thức Python nào. Nếu bạn thành thạo cách sử dụng nó, thì bạn sẽ sẵn sàng viết mã các chức năng mạnh mẽ

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

  • Sử dụng hiệu quả câu lệnh Python
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9 trong hàm của bạn
  • Trả lại một hoặc nhiều giá trị từ các chức năng của bạn cho mã người gọi
  • Áp dụng các phương pháp hay nhất khi sử dụng câu lệnh
    >>> return 42
      File "<stdin>", line 1
    SyntaxError: 'return' outside function
    
    9

Ngoài ra, bạn đã học được một số trường hợp sử dụng nâng cao hơn cho câu lệnh

>>> return 42
  File "<stdin>", line 1
SyntaxError: 'return' outside function
9, chẳng hạn như cách viết mã a và hàm trang trí. Với kiến ​​thức này, bạn sẽ có thể viết các hàm Pythonic, mạnh mẽ và có thể bảo trì hơn bằng Python

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

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

🐍 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

Bạn có thể quay lại trong vòng lặp for python không?

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

Giới thiệu về Leodanis Pozo Ramos

Bạn có thể quay lại trong vòng lặp for python không?
Bạn có thể quay lại trong vòng lặp for python không?

Leodanis là một kỹ sư công nghiệp yêu thích Python và phát triển phần mềm. Anh ấy là một nhà phát triển Python tự học với hơn 6 năm kinh nghiệm. Anh ấy là một nhà văn đam mê kỹ thuật với số lượng bài báo được xuất bản ngày càng tăng trên Real Python và các trang web khác

» Tìm hiểu thêm về Leodanis


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à

Bạn có thể quay lại trong vòng lặp for python không?

Aldren

Bạn có thể quay lại trong vòng lặp for python không?

Bryan

Bạn có thể quay lại trong vòng lặp for python không?

Geir Arne

Bạn có thể quay lại trong vòng lặp for python không?

Joanna

Bạn có thể quay lại trong vòng lặp for python không?

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 »

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

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

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

Bạn nghĩ sao?

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

Tweet Chia sẻ Chia sẻ Email

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

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

Bạn có thể đặt return trong vòng lặp for Python không?

Việc sử dụng hàm return bên trong vòng lặp sẽ phá vỡ nó và thoát khỏi hàm ngay cả khi quá trình lặp vẫn chưa kết thúc . Trong một số trường hợp, chúng tôi cần ngắt vòng lặp nếu một số điều kiện được đáp ứng. Tuy nhiên, trong mã hiện tại của bạn, việc phá vỡ vòng lặp trước khi kết thúc là vô tình.

Bạn có thể sử dụng return trong vòng lặp for không?

Có, trả về dừng thực thi và thoát khỏi chức năng . return always** thoát khỏi chức năng của nó ngay lập tức, không cần thực thi thêm nếu nó nằm trong vòng lặp for.

Trả về có dừng vòng lặp for Python không?

Câu lệnh break thoát khỏi vòng lặp. Câu lệnh return thoát khỏi một hàm hoặc phương thức .

Vòng lặp return in for có phá vỡ vòng lặp không?

Câu lệnh return chỉ dừng vòng lặp nếu nó nằm trong hàm (i. e. nó kết thúc cả vòng lặp và chức năng).