Hướng dẫn python script return value - giá trị trả về tập lệnh python
Nếu bạn muốn tập lệnh của mình trả về các giá trị, chỉ cần thực hiện 15 từ một hàm gói mã của bạn nhưng sau đó bạn phải nhập tập lệnh của mình từ một tập lệnh khác để thậm chí có bất kỳ mục đích sử dụng nào cho thông tin đó:return values, just do 15 from a function wrapping your code but then you'd have to import your script from another script to even have any use for that information: Show
Trả về giá trị (từ chức năng gói).
Mã thoát như các chỉ số. -Prat họ theo bất kỳ cách nào bạn muốn lấy dữ liệu ra khỏi nó)
Và thoát với một mã thoát cụ thể tùy thuộc vào những gì bạn muốn nói với Thống đốc của bạn. Tôi đã sử dụng mã thoát khi chạy tập lệnh bằng môi trường lập lịch và giám sát để cho biết những gì đã xảy ra. ( 16 cũng hoạt động và mạnh hơn một chút)
Stdout làm rơle của bạnNếu không bạn phải sử dụng stdout để giao tiếp với thế giới bên ngoài (như bạn đã mô tả). Nhưng đó thường là một ý tưởng tồi trừ khi đó là trình phân tích cú pháp thực hiện tập lệnh của bạn và có thể bắt bất cứ điều gì bạn đang báo cáo.stdout to communicate with the outside world (like you've described). But that's generally a bad idea unless it's a parser executing your script and can catch whatever it is you're reporting to.
Bạn đang chạy tập lệnh của mình trong môi trường lập lịch kiểm soát sau đó mã thoát là cách tốt nhất để đi. Tập tin như băng tảiNgoài ra còn có tùy chọn chỉ cần ghi thông tin vào một tệp và lưu trữ kết quả ở đó.
Và nhận giá trị/kết quả từ đó. Bạn thậm chí có thể làm điều đó ở định dạng CSV để người khác đọc đơn giản. Ổ cắm như băng tảiNếu không có công việc nào ở trên, bạn cũng có thể sử dụng ổ cắm mạng cục bộ *(unix ổ cắm là một cách tuyệt vời trên các hệ thống NIX). Đây là một chút phức tạp hơn và xứng đáng với bài viết/câu trả lời của riêng họ. Nhưng chỉnh sửa để thêm nó ở đây vì đây là một lựa chọn tốt để giao tiếp giữa các quy trình. Đặc biệt nếu họ nên chạy nhiều nhiệm vụ và trả về giá trị. Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng câu lệnh Python Return một cách hiệu quả This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using the Python return Statement Effectively This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using the Python return Statement Effectively Nội dung chính ShowShow
Câu lệnh Python 8 là một thành phần chính của các hàm và phương thức. Bạn có thể sử dụng câu lệnh 8 để làm cho các chức năng 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ề hàm. Bạn có thể sử dụng chúng để thực hiện tính toán thêm trong các chương trình của bạn.return value. You can use them to perform further computation in your programs.return value. You can use them to perform further computation in your programs.Sử dụng câu lệnh 8 một cách hiệu quả là một kỹ năng cốt lõi nếu bạn muốn mã hóa các chức năng tùy chỉnh có pythonic và mạnh mẽ.Trong hướng dẫn này, bạn sẽ học:
Với kiến thức này, bạn sẽ có thể viết các chức năng dễ đọc hơn, có thể duy trì và súc tích hơn trong Python. Nếu bạn hoàn toàn mới đối với các chức năng Python, thì bạn có thể kiểm tra xác định chức năng Python của riêng bạn trước khi đi sâu vào hướng dẫn này. Bắt đầu với các chức năng PythonHầ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 sử dụng lại nhanh chóng vì bạn có thể sử dụng tên của chúng để gọi chúng từ các địa điểm khác nhau trong mã của bạn. Các lập trình viên gọi các chương trình con, quy trình, quy trình hoặc chức năng được đặt tên này có tên này tùy thuộc vào ngôn ngữ họ sử dụng. Trong một số ngôn ngữ, có một sự khác biệt rõ ràng giữa một thói quen hoặc quy trình và một hàm.subroutines, routines, procedures, or functions depending on the language they use. In some languages, there’s a clear difference between a routine or procedure and a function. subroutines, routines, procedures, or functions depending on the language they use. In some languages, there’s a clear difference between a routine or procedure and a function. Đôi khi sự khác biệt đó mạnh đến mức bạn cần sử dụng một từ khóa cụ thể để xác định quy trình hoặc chương trình con và từ khóa khác để xác định hàm. Ví dụ, ngôn ngữ lập trình cơ bản trực quan sử dụng 13 và 14 để 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 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 một giá trị hoặc kết quả cuối cùng, sau đó được gửi lại cho mã người gọi. Cả quy trình và chức năng 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ố.procedure is a named code block that performs a set of actions without computing a final value or result. On the other hand, a function is a named code block that performs some actions with the purpose of computing a final value or result, which is then sent back to the caller code. Both procedures and functions can act upon a set of input values, commonly known as arguments.procedure is a named code block that performs a set of actions without computing a final value or result. On the other hand, a function is a named code block that performs some actions with the purpose of computing a final value or result, which is then sent back to the caller code. Both procedures and functions can act upon a set of input values, commonly known as arguments. Trong Python, các loại khối mã được đặt tên này được gọi là chức năng vì chúng luôn gửi lại giá trị cho người gọi. Tài liệu Python xác định một chức năng như sau:
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 người gọi, nhưng bạn sẽ sớm thấy rằng các chức năng có thể trả về bất kỳ đối tượng Python nào cho mã người gọi. Nói chung, một hàm có các đối số (nếu có), thực hiện một số hoạt động và trả về một giá trị (hoặc đối tượng). Giá trị mà một hàm trả về người gọi thường được gọi là giá trị trả về hàm. Tất cả các hàm Python có giá trị trả về, rõ ràng hoặc ẩn. Bạn sẽ bao gồm sự khác biệt giữa các giá trị trả về rõ ràng và ẩn sau này trong hướng dẫn này.takes arguments (if any), performs some operations, and returns a value (or object). The value that a function returns to the caller is generally known as the function’s return value. All Python functions have a return value, either explicit or implicit. You’ll cover the difference between explicit and implicit return values later in this tutorial.takes arguments (if any), performs some operations, and returns a value (or object). The value that a function returns to the caller is generally known as the function’s return value. All Python functions have a return value, either explicit or implicit. You’ll cover the difference between explicit and implicit return values later in this tutorial. Để viết hàm Python, bạn cần một tiêu đề bắt đầu bằng từ khóa 15, theo sau là tên của hàm, một danh sách tùy chọn 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 và dấu hai chấm cuối cùng.header that starts with the 15 keyword, followed by the name of the function, an optional list of comma-separated arguments inside a required pair of parentheses, and a final colon.header that starts with the 15 keyword, followed by the name of the function, an optional list of comma-separated
arguments inside a required pair of parentheses, and a final colon.Thành phần thứ hai của một hàm là khối mã hoặc cơ thể của nó. Python xác định các khối mã bằng cách sử dụng thụt lề thay vì dấu ngoặc, 16 và 17 từ khóa, 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:code block, or body. Python defines code blocks using indentation instead of brackets, 16 and 17 keywords, and so on. So, to define a function in Python you can use the following syntax: 9code block, or body. Python defines code blocks using indentation instead of brackets, 16 and 17 keywords, and so on. So, to define a
function in Python you can use the following syntax: 9Khi bạn mã hóa chức năng Python, bạn cần xác định tiêu đề với từ khóa 15, 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 được yêu cầu về mặt cú pháp. Sau đó, bạn cần xác định khối mã chức năng, sẽ bắt đầu một cấp độ thụt bên phải.Trong ví dụ trên, bạn sử dụng câu lệnh 19. Loại tuyên bố này rất hữu ích khi bạn cần một câu lệnh trình giữ chỗ trong mã của mình để làm cho nó chính xác về mặt cú pháp, nhưng bạn không cần phải thực hiện bất kỳ hành động nào. Các tuyên bố 19 còn được gọi là hoạt động null vì họ không thực hiện bất kỳ hành động nào.null operation because they don’t perform any action.null operation because they don’t perform any action.Để sử dụng một chức năng, bạn cần gọi nó. Một cuộc gọi chức năng bao gồm tên hàm tên theo sau là các đối số chức năng trong ngoặc đơn: 3Bạn chỉ cần chuyển các đối số cho một cuộc gọi chức năng chỉ khi 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 một cuộc gọi chức năng. Nếu bạn quên chúng, thì bạn đã thắng được gọi chức năng nhưng tham khảo nó như một đối tượng chức năng. Để làm cho các chức năng của bạn trả về một giá trị, bạn cần sử dụng câu lệnh Python 8. Đó là những gì bạn có thể bao gồm từ thời điểm này.Hiểu tuyên bố Python >>> return 42 File "", line 1 SyntaxError: 'return' outside function 8Câu lệnh Python 8 là một tuyên bố đặc biệt mà bạn có thể sử dụng bên trong một hàm hoặc phương thức để gửi kết quả của chức năng trở lại cho người gọi. Một câu lệnh 8 bao gồm từ khóa 8 theo sau là giá trị trả về tùy chọn.Python 8 statement is a special statement that you can use inside a function or method to send the function’s result back to the caller. A 8 statement consists of the 8 keyword followed by an optional return value.Python 8 statement is a special statement that you can use inside a function or method to send the function’s result back to the
caller. A 8 statement consists of the 8 keyword followed by an optional return value.Giá trị trả về của hàm Python có thể là bất kỳ đối tượng Python nào. Tất cả mọi thứ trong Python là một đối tượng. Vì vậy, các chức năng của bạn có thể trả về các giá trị số ( 16, 17 và 18), các bộ sưu tập và trình tự của các đối tượng ( 19, 50, 51 hoặc 52 đối tượng)Bạn có thể bỏ qua giá trị trả về của một hàm và sử dụng giá trị trả lại trần mà không có giá trị trả về. Bạn cũng có thể bỏ qua toàn bộ tuyên bố 8. Trong cả hai trường hợp, giá trị trả lại sẽ là 55.Trong hai phần tiếp theo, bạn sẽ đề cập đến những điều cơ bản về cách thức câu lệnh 8 hoạt động và cách bạn có thể sử dụng nó để trả lại kết quả của chức năng trở lại mã người gọi.Báo cáo rõ ràng >>> return 42 File "", line 1 SyntaxError: 'return' outside function 8Một câu lệnh 8 rõ ràng ngay lập tức chấm dứt thực thi chức năng và gửi giá trị trả về lại mã người gọi. Để thêm câu lệnh 8 rõ ràng vào hàm Python, bạn cần sử dụng 8 theo sau là giá trị trả về tùy chọn:explicit 8 statement immediately terminates a function execution and sends the return value back to the caller code. To add an explicit 8 statement to a Python function, you need to use 8 followed by an optional return value:explicit 8 statement immediately terminates a function execution and sends the return value back to the caller code. To add an explicit 8 statement to a Python function,
you need to use 8 followed by an optional return value:>>> 7Khi bạn xác định 81, bạn sẽ thêm một câu lệnh 8 rõ ràng ( 83) ở cuối khối mã chức năng. 84 là giá trị trả về rõ ràng của 81. Điều này có nghĩa là bất cứ khi nào bạn gọi 81, chức năng sẽ gửi lại 84 cho người gọi.Nếu bạn xác định một hàm với câu lệnh 8 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:>>> 6 7Khi bạn xác định 81, bạn sẽ thêm một câu lệnh 8 rõ ràng ( 83) ở cuối khối mã chức năng. 84 là giá trị trả về rõ ràng của 81. Điều này có nghĩa là bất cứ khi nào bạn gọi 81, chức năng sẽ gửi lại 84 cho người gọi.>>>
7Khi bạn xác định 81, bạn sẽ thêm một câu lệnh 8 rõ ràng ( 83) ở cuối khối mã chức năng. 84 là giá trị trả về rõ ràng của 81. Điều này có nghĩa là bất cứ khi nào bạn gọi 81, chức năng sẽ gửi lại 84 cho người gọi.Nếu bạn xác định một hàm với câu lệnh 8 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:>>> 1 7Khi bạn xác định 81, bạn sẽ thêm một câu lệnh 8 rõ ràng ( 83) ở cuối khối mã chức năng. 84 là giá trị trả về rõ ràng của 81. Điều này có nghĩa là bất cứ khi nào bạn gọi 81, chức năng sẽ gửi lại 84 cho người gọi.>>> 1 7Khi bạn xác định 81, bạn sẽ thêm một câu lệnh 8 rõ ràng ( 83) ở cuối khối mã chức năng. 84 là giá trị trả về rõ ràng của 81. Điều này có nghĩa là bất cứ khi nào bạn gọi 81, chức năng sẽ gửi lại 84 cho người gọi.>>> 5 7Khi bạn xác địnhNếu bạn xác định một hàm với câu lệnh 8 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: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 1, bạn sẽ thêm một câu lệnh >>> return 42 File "", line 1 SyntaxError: 'return' outside function 8 rõ ràng (>>> def add_one(x): ... # No return statement at all ... result = x + 1 ... >>> value = add_one(5) >>> value >>> print(value) None 3) ở cuối khối mã chức năng. >>> def add_one(x): ... # No return statement at all ... result = x + 1 ... >>> value = add_one(5) >>> value >>> print(value) None 4 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 1. Đ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 1, chức năng 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 4 cho người gọi. Vì implicit 8 statement that uses 55 as a return value:>>> 8Khi bạn xác định 81, bạn sẽ thêm một câu lệnh 8 rõ ràng ( 83) ở cuối khối mã chức năng. 84 là giá trị trả về rõ ràng của 81. Điều này có nghĩa là bất cứ khi nào bạn gọi 81, chức năng sẽ gửi lại 84 cho người gọi.Nếu bạn xác định một hàm với câu lệnh 55 là 326. Mục tiêu của hàm 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 8 rõ ràng vì nó không trả lời bất cứ điều gì hữu ích hoặc có ý nghĩa:>>> 15Cuộc gọi đến 326 in 329 lên màn hình. Vì đây là mục đích của 326, chức năng không cần phải trả về bất cứ điều gì hữu ích, vì vậy bạn nhận được 55 như một giá trị trả về.Bất kể các chức năng của bạn là bao lâu và phức tạp, bất kỳ chức năng nào không có câu lệnh 8 rõ ràng hoặc một chức năng có câu lệnh 8 mà không có giá trị trả về, sẽ trả về 5 5.Trả lại vs inNếu bạn làm việc trong một phiên tương tác, thì bạn có thể nghĩ rằng in một giá trị và trả về một giá trị là các hoạt động tương đương. Xem xét hai chức năng sau và đầu ra của chúng: >>> 30Cuộc gọi đến 326 in 329 lên màn hình. Vì đây là mục đích của 326, chức năng không cần phải trả về bất cứ điều gì hữu ích, vì vậy bạn nhận được 55 như một giá trị trả về.>>> 31Cuộc gọi đến 326 in 329 lên màn hình. Vì đây là mục đích của 326, chức năng không cần phải trả về bất cứ điều gì hữu ích, vì vậy bạn nhận được 55 như một giá trị trả về.Bất kể các chức năng của bạn là bao lâu và phức tạp, bất kỳ chức năng nào không có câu lệnh 8 rõ ràng hoặc một chức năng có câu lệnh 8 mà không có giá trị trả về, sẽ trả về 5 5.line 5, you call 338 to
sum 340 plus 340. Since you’re still learning the difference between returning and printing a value, you might expect your script to print 342 to the screen. However, that’s not what happens, and you get nothing on your screen.Trả lại vs in Nếu bạn làm việc trong một phiên tương tác, thì bạn có thể nghĩ rằng in một giá trị và trả về một giá trị là các hoạt động tương đương. Xem xét hai chức năng sau và đầu ra của chúng: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 thấy 329 được in trên màn hình của bạn. Ở đó, chỉ có một sự khác biệt có thể nhìn thấy tinh tế, các dấu ngoặc kép duy nhất trong ví dụ thứ hai. Nhưng hãy xem những gì xảy ra nếu bạn trả về một kiểu dữ liệu khác, hãy nói một đối tượng 16:Bây giờ không có sự khác biệt có thể nhìn thấy. Trong cả hai trường hợp, bạn có thể thấy 84 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 chỉ bắt đầu với Python. Bạn có thể nghĩ rằng 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 tiến sâu hơn vào Python và bạn bắt đầu viết kịch bản đầu tiên của mình. Bạn mở một trình soạn thảo văn bản và nhập mã sau: 32 338 lấy hai số, thêm chúng và trả về kết quả. Trên dòng 5, bạn gọi 338 để tổng 340 cộng với 340. Vì bạn vẫn đang học sự khác biệt giữa trả lại và in một giá trị, bạn có thể mong đợi kịch bản của mình in 342 lên màn hình. Tuy nhiên, đó không phải là những gì xảy ra, và bạn không nhận được gì trên màn hình của mình.line 5, you call 338 to sum 340 plus 340. Since you’re still learning the difference between returning and printing a value, you might expect your script to print 342 to the screen. However, that’s not what happens, and you get nothing on your screen.Hãy thử nó một mình. Lưu tập lệnh của bạn vào một tệp có tên 326.import sys # calculate stuff sys.stdout.write('Bugs: 5|Other: 10\n') sys.stdout.flush() sys.exit(0) 343 và chạy nó từ dòng lệnh của bạn như sau:Nếu bạn chạy 343 từ dòng lệnh của mình, thì bạn đã giành được bất kỳ kết quả nào trên màn hình của bạn. Điều đó bởi vì khi bạn chạy một tập lệnh, các giá trị trả về của các hàm mà bạn gọi trong tập lệnh don lồng được in lên màn hình như chúng làm trong một phiên tương tác.Nếu bạn muốn tập lệnh của bạn hiển thị kết quả của việc gọi 338 trên màn hình của bạn, thì bạn cần gọi rõ ràng 326. Kiểm tra bản cập nhật sau của 343: 33Bây giờ, khi bạn chạy 34 343, bạn sẽ thấy số 342 trên màn hình của bạn.Vì vậy, nếu bạn 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ỳ cuộc gọi chức năng nào trực tiếp đến màn hình của bạn. Nhưng nếu bạn đang viết một tập lệnh và bạn muốn xem một hàm giá trị trả về hàm, thì bạn cần sử dụng rõ ràng Trả về nhiều giá trị Bạn có thể sử dụng câu lệnh>>> 35 8 để 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 biện pháp thống kê. Để mã hóa chức năng đó, bạn có thể sử dụng mô -đun tiêu chuẩn Python Hàm tích hợp 362 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 số của hai giá trị đầu vào và phần còn lại của bộ phận:>>> 36Cuộc gọi đến 362 trả về một tuple chứa thương số 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ề một hàm có nhiều giá trị trả về.Sử dụng Tuyên bố Python >>> return 42 File "", line 1 SyntaxError: 'return' outside function 8: Thực tiễn tốt nhấtCho đến nay, bạn đã đề cập đến những điều cơ bản về cách thức tuyên bố của Python 8 hoạt động. Bây giờ bạn biết cách viết các chức năng 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 một câu lệnh 8 rõ ràng với giá trị trả về rõ ràng cho một hàm đã cho, thì Python sẽ thêm nó cho bạn. Giá trị đó sẽ là 55.Trong phần này, bạn sẽ bao gồm một số ví dụ sẽ hướng dẫn bạn thông qua một tập hợp các thực tiễn lập trình tốt để sử dụng hiệu quả câu lệnh 8. Những thực tiễn này sẽ giúp bạn viết các chức năng dễ đọc hơn, có thể duy 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 5 một cách rõ ràngMột số lập trình viên dựa vào tuyên bố 8 ngầm mà Python thêm vào bất kỳ chức năng nào mà không có một chức năng 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à thủ tục.procedure.procedure.Có những tình huống trong đó bạn có thể thêm một 371 rõ ràng vào các chức năng của bạn. 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:
Những thực hành này có thể cải thiện khả năng đọc và khả năng duy trì của 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 55, bạn có thể sử dụng một trong ba phương pháp có thể:
Ở đây, cách thức hoạt động của nó trong thực tế: >>> 37Có hay không trả lại 55 một cách rõ ràng là một quyết định cá nhân. Tuy nhiên, bạn nên xem xét rằng trong một số trường hợp, một 371 rõ ràng có thể tránh các vấn đề về khả năng duy 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 mà don hành xử như Python.Ghi nhớ giá trị trả vềKhi viết các chức năng tùy chỉnh, bạn có thể vô tình quên trả về giá trị từ một hàm. Trong trường hợp này, Python sẽ trả lại 55 cho bạn. Điều này có thể khiến các lỗi tinh tế có thể khó khăn cho một nhà phát triển Python khởi đầu để 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 8 ngay sau khi tiêu đề của hàm. Sau đó, bạn có thể thực hiện một đường chuyền thứ hai để viết cơ thể chức năng. Dưới đây, một mẫu mà bạn có thể sử dụng khi mã hóa các chức năng Python của mình: 38Nế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 bỏ lỡ câu lệnh 8 nữa. Với cách tiếp cận 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 khi bạn biết rằng hàm hoạt động.Thực tiễn 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 dễ 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ạpNhư bạn đã thấy trước đây, nó là một thực tế phổ biến để 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 sử dụng trở nên quá phức tạp, thì thực tế này có thể dẫn đến các chức năng khó hiểu, gỡ lỗi và duy trì. Ví dụ: nếu bạn đang thực hiện một tính toán phức tạp, thì sẽ dễ đọc hơn để tính toán kết quả cuối cùng bằng cách sử dụng các biến tạm thời với các tên có ý nghĩa.temporary variables with meaningful names.temporary variables with meaningful names. Xem xét chức năng sau đây tính toán phương sai của mẫu dữ liệu số: >>> 39Biểu thức mà bạn sử dụng ở đây khá phức tạp và khó hiểu. Nó cũng khó gỡ lỗi vì bạn đã thực hiện nhiều hoạt động trong một biểu thức duy nhất. Để giải quyết vấn đề cụ thể này, bạn có thể tận dụng phương pháp phát triển gia tăng giúp cải thiện khả năng đọc của chức năng. Hãy xem thực hiện thay thế sau đây của 389:>>> 70Trong lần thực hiện thứ hai này của 389, bạn tính toán phương sai trong một số bước. Mỗi bước được thể hiện bằng một biến tạm thời với một tên có ý nghĩa.Các biến tạm thời như 391, 357 và 393 thường hữu ích khi gỡ lỗi mã của bạn. Ví dụ, nếu có điều gì đó không ổn với một trong số họ, thì bạn có thể gọi 326 để biết những gì xảy ra trước khi câu lệnh 8 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 8 của bạn. 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 mỗi bước. Sử dụng các biến tạm thời có thể làm cho mã của bạn dễ dàng gỡ lỗi, hiểu và duy trì hơn.Trả về giá trị so với Globals sửa đổiCác chức năng mà don lồng có một tuyên bố 8 rõ ràng với giá trị trả về có ý nghĩa thường là các hành động có hình thức có tác dụng phụ. Chẳng hạn, một tác dụng phụ có thể in một cái gì đó lên màn hình, sửa đổi biến toàn cầu, cập nhật trạng thái của một đối tượng, viết một số văn bản vào một tệp, v.v.side effect can be, for example, printing something to the screen, modifying a global variable, updating the state of an object, writing some text to a file, and so on.side effect can be, for example, printing something to the screen, modifying a
global variable, updating the state of an object, writing some text to a file, and so on.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ầu có thể khó gỡ lỗi, hiểu và duy trì. Khi bạn sửa đổi một biến toàn cầu, bạn có khả năng ảnh hưởng đến tất cả các chức năng, lớp, đối tượng và bất kỳ phần nào khác trong các chương trình của bạn dựa vào biến toàn cầu đó. Để hiểu một chương trình sửa đổi các biến toàn cầu, bạn cần nhận thức được tất cả các phần của chương trình có thể thấy, truy cập và thay đổi các biến đó. Vì vậy, thực tiễn tốt khuyến nghị viết các chức năng độc lập có một số đối số và trả về một giá trị (hoặ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ầu.self-contained functions that take some arguments and return a useful value (or values) without causing any side effect on global variables.self-contained functions that take some arguments and return a useful value (or values) without causing any side effect on global variables. Ngoài ra, các chức năng với câu lệnh 8 rõ ràng trả về giá trị có ý nghĩa dễ kiểm tra hơn so với các hàm sửa đổi hoặc cập nhật các biến toàn cầu.Ví dụ sau đây cho thấy một hàm thay đổi một biến toàn cầu. Hàm sử dụng câu lệnh 399, cũng được coi là một thực tiễn lập trình xấu trong Python:>>> 71Trong ví dụ này, trước tiên bạn tạo một biến toàn cầu, 700, với giá trị ban đầu là 701. Bên trong 702, bạn sử dụng câu lệnh 399 để cho biết chức năng rằng bạn muốn sửa đổi một biến toàn cầu. Tuyên bố cuối cùng tăng 700 bởi 308.Kết quả của việc gọi 702 sẽ phụ thuộc vào giá trị ban đầu là 700. Các giá trị ban đầu khác nhau cho 700 sẽ tạo ra các kết quả khác nhau, do đó, kết quả của hàm có 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 702 khép kín, lấy các đối số và trả về một giá trị mạch lạc chỉ phụ thuộc vào các đối số đầu vào:>>> 72Bây giờ kết quả của việc gọi 702 chỉ phụ thuộc vào các đối số đầu vào thay vì vào giá trị ban đầu là 700. Điều này làm cho chức năng mạnh mẽ và dễ kiểm tra hơn.Ngoài ra, khi bạn cần cập nhật 700, bạn có thể thực hiện rõ ràng với một cuộc gọi đến 702. 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ì xảy ra với 700 trong suốt mã của bạn.Nói chung, nó là một thực tiễn tốt để tránh các chức năng sửa đổi các biến toàn cầu. Nếu có thể, hãy cố gắng viết các chức năng độc lập với một câu lệnh 8 rõ ràng trả về một giá trị mạch lạc và có ý nghĩa.self-contained functions with an explicit 8 statement that returns a coherent and meaningful value.self-contained functions with an explicit 8 statement that returns a coherent and meaningful value.Sử dụng >>> return 42 File "", line 1 SyntaxError: 'return' outside function 8 với các điều kiệnCác hàm Python không bị hạn chế để có một tuyên bố 8 duy nhất. Nếu một hàm nhất định có nhiều hơn một câu lệnh 8, thì mô hình đầu tiên gặp phải sẽ xác định kết thúc thực thi chức năng và cả giá trị trả về của nó.Một cách phổ biến để viết các chức năng với nhiều câu lệnh 8 là sử dụng các câu lệnh có điều kiện cho phép bạn cung cấp các câu lệnh 8 khác nhau tùy thuộc vào kết quả của việc đánh giá một số điều kiện.Giả sử bạn cần mã hóa một hàm lấy một số và trả về giá trị tuyệt đối của nó. Nếu số lớn hơn 701, thì bạn sẽ trả về cùng một số. Nếu số nhỏ hơn 701, thì bạn sẽ trả về giá trị đối diện hoặc không âm.Ở đây, một triển khai có thể cho chức năng này: >>> 73 723 có hai tuyên bố 8 rõ ràng, mỗi câu trong số chúng được bọc trong tuyên bố 725 của riêng mình. Nó cũng có một tuyên bố 8 ngầm. Nếu 727 xảy ra là 7 01, thì không có điều kiện nào là đúng và chức năng kết thúc mà không nhấn bất kỳ câu lệnh 8 rõ ràng nào. Khi điều này xảy ra, bạn tự động nhận được 55. Hãy xem cuộc gọi sau đến 723 bằng cách sử dụng 701 làm đối số:>>> 74 73 723 có hai tuyên bố 8 rõ ràng, mỗi câu trong số chúng được bọc trong tuyên bố 725 của riêng mình. Nó cũng có một tuyên bố 8 ngầm. Nếu 727 xảy ra là 7 01, thì không có điều kiện nào là đúng và chức năng kết thúc mà không nhấn bất kỳ câu lệnh 8 rõ ràng nào. Khi điều này xảy ra, bạn tự động nhận được 55. Hãy xem cuộc gọi sau đến 723 bằng cách sử dụng 701 làm đối số:Khi bạn gọi >>> 75 73 723 có hai tuyên bố 8 rõ ràng, mỗi câu trong số chúng được bọc trong tuyên bố 725 của riêng mình. Nó cũng có một tuyên bố 8 ngầm. Nếu 727 xảy ra là 7 01, thì không có điều kiện nào là đúng và chức năng kết thúc mà không nhấn bất kỳ câu lệnh 8 rõ ràng nào. Khi điều này xảy ra, bạn tự động nhận được 55. Hãy xem cuộc gọi sau đến 723 bằng cách sử dụng 701 làm đối số:Khi bạn gọi >>> 76 73 723 có hai tuyên bố 8 rõ ràng, mỗi câu trong số chúng được bọc trong tuyên bố 725 của riêng mình. Nó cũng có một tuyên bố 8 ngầm. Nếu 727 xảy ra là 7 01, thì không có điều kiện nào là đúng và chức năng kết thúc mà không nhấn bất kỳ câu lệnh 8 rõ ràng nào. Khi điều này xảy ra, bạn tự động nhận được 55. Hãy xem cuộc gọi sau đến 723 bằng cách sử dụng 701 làm đối số:Khi bạn gọi >>> return 42
File " |