Hướng dẫn void function python - chức năng void python
Cập nhật lần cuối vào ngày 22 tháng 9 năm 2020 Show
Nội dung chính ShowShow
Cho đến nay trong khóa học này, chúng tôi đã sử dụng các chức năng tích hợp đi kèm với Python. Trong bài học này, chúng ta sẽ tìm hiểu làm thế nào chúng ta có thể tạo ra các chức năng của riêng mình. Nhưng trước khi chúng ta làm điều đó, chúng ta hãy dành thời gian để tìm hiểu lý do tại sao chúng ta thậm chí cần chúng ngay từ đầu. Giả sử bạn muốn tạo một chương trình cho phép người dùng tính tổng giữa hai số. Tại thời điểm này, bạn không nên có bất kỳ vấn đề nào để viết các chương trình như vậy; Dù sao, mã của bạn có thể trông giống như vậy:
Thử ngay bây giờ Chương trình này tính toán tổng của tất cả các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3. Nếu chúng tôi muốn tính tổng số các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()5, chúng tôi sẽ cần cập nhật chương trình như sau:
Như bạn có thể thấy cả hai phiên bản của chương trình là gần như giống hệt nhau, sự khác biệt duy nhất là các giá trị của các biến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()6 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()7. Vì vậy, mỗi khi chúng tôi muốn tính tổng của hai số, chúng tôi sẽ cần cập nhật nguồn của chương trình. Sẽ tốt nếu chúng tôi bằng cách nào đó chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng. Hàm # là gìNhư bạn có thể thấy cả hai phiên bản của chương trình là gần như giống hệt nhau, sự khác biệt duy nhất là các giá trị của các biến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 6 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 7. Vì vậy, mỗi khi chúng tôi muốn tính tổng của hai số, chúng tôi sẽ cần cập nhật nguồn của chương trình. Sẽ tốt nếu chúng tôi bằng cách nào đó chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng.
Bây giờ hãy xem xét các ví dụ sau: Khi hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum) 58 được gọi trong dòng 8, đối số import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 2 được truyền đến biến tham số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum) 60 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum) 61 được chuyển đến biến tham số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum) 62.Ví dụ 2: Chuyển các đối tượng có thể thay đổi cho chức năng Một cách khác để chuyển các đối số cho một hàm là sử dụng các đối số từ khóa. Trong phương pháp này, chúng tôi vượt qua từng đối số trong mẫu sau: Hàm void trả về không. #Đây là chức năng nhỏ in ngày và giờ hiện tại cùng với lời chào: python101/Chapter-13/first_function.py
Thử ngay bây giờ Chương trình này tính toán tổng của tất cả các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3. Nếu chúng tôi muốn tính tổng số các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()5, chúng tôi sẽ cần cập nhật chương trình như sau: Như bạn có thể thấy cả hai phiên bản của chương trình là gần như giống hệt nhau, sự khác biệt duy nhất là các giá trị của các biến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 6 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 7. Vì vậy, mỗi khi chúng tôi muốn tính tổng của hai số, chúng tôi sẽ cần cập nhật nguồn của chương trình. Sẽ tốt nếu chúng tôi bằng cách nào đó chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng.Hàm # là gì import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8 Một chức năng được đặt tên là nhóm các câu lệnh, thực hiện một nhiệm vụ cụ thể. Cú pháp xác định hàm như sau: Một chức năng bao gồm hai phần: tiêu đề và cơ thể. Tiêu đề chức năng bắt đầu với từ khóa import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8, theo sau là tên của hàm, theo sau là các đối số và kết thúc bằng dấu hai chấm ( import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9). import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()1 python101/Chapter-13/calling_first_function.py
Thử ngay bây giờ Output:
Chương trình này tính toán tổng của tất cả các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3. Nếu chúng tôi muốn tính tổng số các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()5, chúng tôi sẽ cần cập nhật chương trình như sau: python101/Chapter-13/call_before_definition.py
Thử ngay bây giờ Output:
Chương trình này tính toán tổng của tất cả các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3. Nếu chúng tôi muốn tính tổng số các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()5, chúng tôi sẽ cần cập nhật chương trình như sau: Như bạn có thể thấy cả hai phiên bản của chương trình là gần như giống hệt nhau, sự khác biệt duy nhất là các giá trị của các biến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 6 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 7. Vì vậy, mỗi khi chúng tôi muốn tính tổng của hai số, chúng tôi sẽ cần cập nhật nguồn của chương trình. Sẽ tốt nếu chúng tôi bằng cách nào đó chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng. Hàm # là gìpython101/Chapter-13/transfer_of_control.py
Thử ngay bây giờ Output:
Chương trình này tính toán tổng của tất cả các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3. Nếu chúng tôi muốn tính tổng số các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()5, chúng tôi sẽ cần cập nhật chương trình như sau: Như bạn có thể thấy cả hai phiên bản của chương trình là gần như giống hệt nhau, sự khác biệt duy nhất là các giá trị của các biến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 6 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 7. Vì vậy, mỗi khi chúng tôi muốn tính tổng của hai số, chúng tôi sẽ cần cập nhật nguồn của chương trình. Sẽ tốt nếu chúng tôi bằng cách nào đó chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng. Hàm # là gìpython101/Chapter-13/two_func_program_control.py
Thử ngay bây giờ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8, theo sau là tên của hàm, theo sau là các đối số và kết thúc bằng dấu hai chấm ( import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9). import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()1 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9 Như bạn có thể thấy cả hai phiên bản của chương trình là gần như giống hệt nhau, sự khác biệt duy nhất là các giá trị của các biến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 6 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 7. Vì vậy, mỗi khi chúng tôi muốn tính tổng của hai số, chúng tôi sẽ cần cập nhật nguồn của chương trình. Sẽ tốt nếu chúng tôi bằng cách nào đó chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng.
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)1 Ở phía bên kia của quang phổ, chúng ta có các biến toàn cầu. Biến toàn cầu là các biến được xác định bên ngoài bất kỳ chức năng nào. Phạm vi của biến toàn cầu bắt đầu từ điểm chúng được xác định và tiếp tục cho đến khi chương trình kết thúc. Bây giờ hãy xem xét các ví dụ sau: Ví dụ 1:: : python101/Chapter-13/variable_scope.py
Thử ngay bây giờ Output:
Trong các dòng 3-5 và 8-11, chúng tôi đã xác định hai hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 hiện được cập nhật để chấp nhận một đối số gọi là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00, sau đó nó sử dụng trong dòng tiếp theo để chào người dùng. Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95 không chấp nhận bất kỳ đối số nào và có ba tuyên bố bên trong cơ thể. Output:
Câu lệnh trong dòng 13, gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Kiểm soát chương trình nhảy vào cơ thể của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Câu lệnh đầu tiên bên trong chuỗi in import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)05 vào bảng điều khiển. Câu lệnh trong dòng 10, gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 với đối số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)07 sẽ được gán cho biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00 trong tiêu đề chức năng. Tại thời điểm này, việc thực hiện các câu lệnh sau cuộc gọi đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 dừng lại và kiểm soát chương trình nhảy vào phần thân của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82. Sau khi thực hiện phần thân của chức năng import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82, điều khiển chương trình nhảy trở lại nơi nó rời khỏi và thực thi câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()83 trong dòng 11. Vì không còn câu lệnh nào để thực thi trong hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95 và điều khiển chương trình nhảy trở lại nơi nó rời đi Tắt để thực thi các câu lệnh sau khi gọi chức năng (dòng 13). Các biến cục bộ, biến toàn cầu và phạm vi # Phạm vi biến: Phạm vi của một biến đề cập đến một phần của chương trình nơi nó có thể được truy cập. python101/Chapter-13/same_global_and_local.py
Thử ngay bây giờ Output: sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)6 Ở phía bên kia của quang phổ, chúng ta có các biến toàn cầu. Biến toàn cầu là các biến được xác định bên ngoài bất kỳ chức năng nào. Phạm vi của biến toàn cầu bắt đầu từ điểm chúng được xác định và tiếp tục cho đến khi chương trình kết thúc. python101/Chapter-13/same_variable_names_in_different_functions.py
Thử ngay bây giờ Output:
Bây giờ hãy xem xét các ví dụ sau:Trong các dòng 3-5 và 8-11, chúng tôi đã xác định hai hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 hiện được cập nhật để chấp nhận một đối số gọi là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00, sau đó nó sử dụng trong dòng tiếp theo để chào người dùng.Hàm
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)7 Câu lệnh trong dòng 13, gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Kiểm soát chương trình nhảy vào cơ thể của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Câu lệnh đầu tiên bên trong chuỗi in import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)05 vào bảng điều khiển. Câu lệnh trong dòng 10, gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 với đối số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)07 sẽ được gán cho biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00 trong tiêu đề chức năng. Tại thời điểm này, việc thực hiện các câu lệnh sau cuộc gọi đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 dừng lại và kiểm soát chương trình nhảy vào phần thân của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82. Sau khi thực hiện phần thân của chức năng import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82, điều khiển chương trình nhảy trở lại nơi nó rời khỏi và thực thi câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()83 trong dòng 11. Vì không còn câu lệnh nào để thực thi trong hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95 và điều khiển chương trình nhảy trở lại nơi nó rời đi Tắt để thực thi các câu lệnh sau khi gọi chức năng (dòng 13). python101/Chapter-13/function_argument.py
Thử ngay bây giờ Output: sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)6 Trong các dòng 3-5 và 8-11, chúng tôi đã xác định hai hàm
python101/Chapter-13/factorial.py
Thử ngay bây giờ Output: sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)6 Trong các dòng 3-5 và 8-11, chúng tôi đã xác định hai hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 và import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95. Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 hiện được cập nhật để chấp nhận một đối số gọi là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00, sau đó nó sử dụng trong dòng tiếp theo để chào người dùng.
import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()95 không chấp nhận bất kỳ đối số nào và có ba tuyên bố bên trong cơ thể. sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)7
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)55 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)27 được gọi với đối số import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4. Giá trị của đối số sau đó được gán cho biến tham số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20.56: Passing multiple arguments to the function python101/Chapter-13/multiple_arguments.py
Thử ngay bây giờ Output:
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)27 được gọi với đối số import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4. Giá trị của đối số sau đó được gán cho biến tham số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20. def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>5Ví dụ 2: Hàm để tính toán giai thừa của một số. def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>6 Lượng của một sốThứ tự của các đối số được truyền trong khi gọi hàm phải khớp với thứ tự của các tham số trong tiêu đề hàm, nếu không, bạn có thể nhận được kết quả không mong muốn. Vượt qua giá trị #
Thử ngay bây giờ Output:
Hãy nhớ lại rằng mọi thứ trong Python là đối tượng. Vì vậy, một biến cho một đối tượng, thực sự là một tham chiếu đến đối tượng. Nói cách khác, một biến lưu trữ địa chỉ nơi một đối tượng được lưu trữ trong bộ nhớ. Nó không chứa chính đối tượng thực tế. Khi một hàm được gọi với các đối số, đó là địa chỉ của đối tượng được lưu trữ trong đối số được truyền đến biến tham số. Tuy nhiên, chỉ vì mục đích đơn giản, chúng tôi nói rằng giá trị của đối số được chuyển đến tham số trong khi gọi hàm. Cơ chế này được gọi là vượt qua theo giá trị. Xem xét ví dụ sau:
Nếu các đối số được truyền cho chức năng là bất biến, thì các thay đổi được thực hiện đối với biến tham số sẽ không ảnh hưởng đến đối số. Tuy nhiên, nếu đối số được truyền cho hàm là có thể thay đổi, thì các thay đổi được thực hiện đối với biến tham số sẽ ảnh hưởng đến đối số.: Passing immutable objects to function.: Passing immutable objects to function. python101/Chapter-13/passing_immutable_objects.py
Thử ngay bây giờ Output:
Hãy nhớ lại rằng mọi thứ trong Python là đối tượng. Vì vậy, một biến cho một đối tượng, thực sự là một tham chiếu đến đối tượng. Nói cách khác, một biến lưu trữ địa chỉ nơi một đối tượng được lưu trữ trong bộ nhớ. Nó không chứa chính đối tượng thực tế. Khi một hàm được gọi với các đối số, đó là địa chỉ của đối tượng được lưu trữ trong đối số được truyền đến biến tham số. Tuy nhiên, chỉ vì mục đích đơn giản, chúng tôi nói rằng giá trị của đối số được chuyển đến tham số trong khi gọi hàm. Cơ chế này được gọi là vượt qua theo giá trị. Xem xét ví dụ sau: Lưu ý rằng các giá trị sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)63 là như nhau. Điều này có nghĩa là biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 tham chiếu cùng một đối tượng. Nói cách khác, cả sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 đều chỉ vào cùng một vị trí bộ nhớ trong đó đối tượng sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68 ( import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4) được lưu trữ.15 được gọi với một đối số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 (chỉ vào một đối tượng bất biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68). Giá trị của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 được truyền đến tham số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65. Bên trong giá trị hàm của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 được tăng lên bởi import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 (dòng 3). Khi hàm kết thúc, câu lệnh in trong dòng 8 được thực thi và chuỗi sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)77 được in vào bảng điều khiển. Điều này chứng minh rằng bất kể chức năng nào làm gì đối với sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65, giá trị của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 vẫn giữ nguyên.: Passing mutable objects to function python101/Chapter-13/passing_mutable_objects.py
Thử ngay bây giờ Output:
Hãy nhớ lại rằng mọi thứ trong Python là đối tượng. Vì vậy, một biến cho một đối tượng, thực sự là một tham chiếu đến đối tượng. Nói cách khác, một biến lưu trữ địa chỉ nơi một đối tượng được lưu trữ trong bộ nhớ. Nó không chứa chính đối tượng thực tế. Khi một hàm được gọi với các đối số, đó là địa chỉ của đối tượng được lưu trữ trong đối số được truyền đến biến tham số. Tuy nhiên, chỉ vì mục đích đơn giản, chúng tôi nói rằng giá trị của đối số được chuyển đến tham số trong khi gọi hàm. Cơ chế này được gọi là vượt qua theo giá trị. Xem xét ví dụ sau:Lưu ý rằng các giá trịsum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)63 là như nhau. Điều này có nghĩa là biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 tham chiếu cùng một đối tượng. Nói cách khác, cả sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 đều chỉ vào cùng một vị trí bộ nhớ trong đó đối tượng sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68 ( import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4) được lưu trữ.Hành vi này có hai hậu quả quan trọng:
import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()31 python101/Chapter-13/pythagorean_triplets.py
Thử ngay bây giờ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()30 Hãy nhớ lại rằng mọi thứ trong Python là đối tượng. Vì vậy, một biến cho một đối tượng, thực sự là một tham chiếu đến đối tượng. Nói cách khác, một biến lưu trữ địa chỉ nơi một đối tượng được lưu trữ trong bộ nhớ. Nó không chứa chính đối tượng thực tế. Khi một hàm được gọi với các đối số, đó là địa chỉ của đối tượng được lưu trữ trong đối số được truyền đến biến tham số. Tuy nhiên, chỉ vì mục đích đơn giản, chúng tôi nói rằng giá trị của đối số được chuyển đến tham số trong khi gọi hàm. Cơ chế này được gọi là vượt qua theo giá trị. Xem xét ví dụ sau: Lưu ý rằng các giá trị sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)63 là như nhau. Điều này có nghĩa là biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 tham chiếu cùng một đối tượng. Nói cách khác, cả sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)64 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)65 đều chỉ vào cùng một vị trí bộ nhớ trong đó đối tượng sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68 ( import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4) được lưu trữ. Hành vi này có hai hậu quả quan trọng: Nếu các đối số được truyền cho chức năng là bất biến, thì các thay đổi được thực hiện đối với biến tham số sẽ không ảnh hưởng đến đối số.
Thử ngay bây giờ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()30 Hãy nhớ lại rằng mọi thứ trong Python là đối tượng. Vì vậy, một biến cho một đối tượng, thực sự là một tham chiếu đến đối tượng. Nói cách khác, một biến lưu trữ địa chỉ nơi một đối tượng được lưu trữ trong bộ nhớ. Nó không chứa chính đối tượng thực tế. Một cách khác để chuyển các đối số cho một hàm là sử dụng các đối số từ khóa. Trong phương pháp này, chúng tôi vượt qua từng đối số trong mẫu sau:trong đó sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)99 là tên của biến tham số trong tiêu đề hàm và def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>00 đề cập đến giá trị bạn muốn chuyển đến biến tham số. Bởi vì, chúng tôi đang liên kết tên tham số với các giá trị, thứ tự đối số trong lệnh gọi hàm không quan trọng.
Thử ngay bây giờ Tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)84 vượt qua sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)86, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91. Tuy nhiên, tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)92, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 cho cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)98, điều này là sai. Vì vậy, khi sử dụng các đối số vị trí luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi chức năng và thứ tự của các tham số trong các tiêu đề chức năng phù hợp. Nếu không, bạn có thể nhận được kết quả mong đợi.
Thử ngay bây giờ Tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)84 vượt qua sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)86, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91. Tuy nhiên, tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)92, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 cho cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)98, điều này là sai. Vì vậy, khi sử dụng các đối số vị trí luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi chức năng và thứ tự của các tham số trong các tiêu đề chức năng phù hợp. Nếu không, bạn có thể nhận được kết quả mong đợi.
Một cách khác để chuyển các đối số cho một hàm là sử dụng các đối số từ khóa. Trong phương pháp này, chúng tôi vượt qua từng đối số trong mẫu sau:trong đó sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)99 là tên của biến tham số trong tiêu đề hàm và def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>00 đề cập đến giá trị bạn muốn chuyển đến biến tham số. Bởi vì, chúng tôi đang liên kết tên tham số với các giá trị, thứ tự đối số trong lệnh gọi hàm không quan trọng. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()37 Thử ngay bây giờ Tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)84 vượt qua sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)86, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91. Tuy nhiên, tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)92, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 cho cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)98, điều này là sai. Vì vậy, khi sử dụng các đối số vị trí luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi chức năng và thứ tự của các tham số trong các tiêu đề chức năng phù hợp. Nếu không, bạn có thể nhận được kết quả mong đợi. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()38
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)99 là tên của biến tham số trong tiêu đề hàm và def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>00 đề cập đến giá trị bạn muốn chuyển đến biến tham số. Bởi vì, chúng tôi đang liên kết tên tham số với các giá trị, thứ tự đối số trong lệnh gọi hàm không quan trọng. Dưới đây là một số cách khác nhau mà chúng ta có thể gọi chức năng def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>01 bằng cách sử dụng các đối số từ khóa: Thử ngay bây giờ Tuyên bố
Thử ngay bây giờ Tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)84 vượt qua sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)86, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91. Tuy nhiên, tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)92, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 cho cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)98, điều này là sai. Vì vậy, khi sử dụng các đối số vị trí luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi chức năng và thứ tự của các tham số trong các tiêu đề chức năng phù hợp. Nếu không, bạn có thể nhận được kết quả mong đợi. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()38 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()39 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)99 là tên của biến tham số trong tiêu đề hàm và def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>00 đề cập đến giá trị bạn muốn chuyển đến biến tham số. Bởi vì, chúng tôi đang liên kết tên tham số với các giá trị, thứ tự đối số trong lệnh gọi hàm không quan trọng. python101/Chapter-13/return_factorial.py
Thử ngay bây giờ Output:
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)84 vượt qua sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)86, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91. Tuy nhiên, tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)92, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 cho cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)98, điều này là sai. Vì vậy, khi sử dụng các đối số vị trí luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi chức năng và thứ tự của các tham số trong các tiêu đề chức năng phù hợp. Nếu không, bạn có thể nhận được kết quả mong đợi. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()38 python101/Chapter-13/is_even_or_odd.py
Thử ngay bây giờ Tuyên bố
sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)99 là tên của biến tham số trong tiêu đề hàm và def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>00 đề cập đến giá trị bạn muốn chuyển đến biến tham số. Bởi vì, chúng tôi đang liên kết tên tham số với các giá trị, thứ tự đối số trong lệnh gọi hàm không quan trọng. python101/Chapter-13/returning_none.py
Thử ngay bây giờ Output: Tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)84 vượt qua sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)86, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91. Tuy nhiên, tuyên bố sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)92, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)85 cho cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)88 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)41 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 và in sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)98, điều này là sai. Vì vậy, khi sử dụng các đối số vị trí luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi chức năng và thứ tự của các tham số trong các tiêu đề chức năng phù hợp. Nếu không, bạn có thể nhận được kết quả mong đợi. python101/Chapter-13/grade_calculator.py
Thử ngay bây giờ
Trộn các đối số từ khóa và vị trí #Chúng ta cũng có thể trộn các đối số vị trí và đối số từ khóa trong một cuộc gọi chức năng. Khi làm như vậy, yêu cầu duy nhất là các đối số vị trí phải xuất hiện trước bất kỳ đối số từ khóa nào. Điều đó có nghĩa là hai cuộc gọi sau đây hoàn toàn hợp lệ vì trong cả hai cuộc gọi đối số vị trí xuất hiện trước các đối số từ khóa. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()24 nào thì giá trị đặc biệt import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27 được trả về khi hàm kết thúc. Trong Python, import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27 là một chữ của loại import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()29 được sử dụng để biểu thị sự vắng mặt của một giá trị. Nó thường được gán cho một biến để chỉ ra rằng biến không trỏ đến bất kỳ đối tượng nào. Chương trình sau đây chứng minh rằng các hàm void trả về import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27. python101/Chapter-13/void_function.py
Thử ngay bây giờ Output: Đảm bảo đủ! def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 Hàm thực sự trả về import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27. Vì vậy, chúng ta có thể nói rằng trong Python, tất cả các hàm trả về giá trị cho dù bạn có sử dụng câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()24 hay không. Tuy nhiên, điều này không có nghĩa là bạn có thể sử dụng các hàm void giống như hàm hoàn trả giá trị. Xem xét ví dụ sau: python101/Chapter-13/using_void_function_as_non_void_function.py
Thử ngay bây giờ Output:
def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 Hàm thực sự trả về import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27. Vì vậy, chúng ta có thể nói rằng trong Python, tất cả các hàm trả về giá trị cho dù bạn có sử dụng câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()24 hay không. Tuy nhiên, điều này không có nghĩa là bạn có thể sử dụng các hàm void giống như hàm hoàn trả giá trị. Xem xét ví dụ sau: import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()14 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()15 Trong dòng 5, chúng tôi đang cố gắng thêm giá trị được trả về từdef function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 tức là import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27 vào số nguyên import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4, nhưng thao tác không thành công vì hoạt động def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>39 không thể thêm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()29 vào sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68.Đó là lý do tại sao một hàm void thường được gọi như một tuyên bố như thế này: Trả về nhiều giá trị # Để trả về nhiều giá trị từ một hàm, chỉ cần chỉ định từng giá trị được phân tách bằng dấu phẩy (python101/Chapter-13/returning_multiple_values.py
Thử ngay bây giờ Output:
def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 Hàm thực sự trả về import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27. Vì vậy, chúng ta có thể nói rằng trong Python, tất cả các hàm trả về giá trị cho dù bạn có sử dụng câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()24 hay không. Tuy nhiên, điều này không có nghĩa là bạn có thể sử dụng các hàm void giống như hàm hoàn trả giá trị. Xem xét ví dụ sau: import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()19 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()14 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()15 Trong dòng 5, chúng tôi đang cố gắng thêm giá trị được trả về từdef function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 tức là import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27 vào số nguyên import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4, nhưng thao tác không thành công vì hoạt động def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>39 không thể thêm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()29 vào sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68. python101/Chapter-13/setting_default_values.py
Thử ngay bây giờ Output:
def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 Hàm thực sự trả về import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27. Vì vậy, chúng ta có thể nói rằng trong Python, tất cả các hàm trả về giá trị cho dù bạn có sử dụng câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()24 hay không. Tuy nhiên, điều này không có nghĩa là bạn có thể sử dụng các hàm void giống như hàm hoàn trả giá trị. Xem xét ví dụ sau: import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()14 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()15 Trong dòng 5, chúng tôi đang cố gắng thêm giá trị được trả về từ def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>13 tức là import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()27 vào số nguyên import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4, nhưng thao tác không thành công vì hoạt động def function_name(arg1, arg2, arg3 ... argN): # function body <indented statement 1> <non-indented statement 2> ... <indented statement n> <return statement>39 không thể thêm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()29 vào sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)68.Đó là lý do tại sao một hàm void thường được gọi như một tuyên bố như thế này: Trả về nhiều giá trị #Để trả về nhiều giá trị từ một hàm, chỉ cần chỉ định từng giá trị được phân tách bằng dấu phẩy (printf function is treated as a void function. (In actuality, printf returns an integer which is the number of characters printed... but we almost always ignore this value.) import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 22) sau từ khóa import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 24.import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 16Khi gọi một hàm trả về nhiều giá trị, số lượng biến ở phía bên trái của toán tử created and used just like value-returning functions except they do not return a value after the function executes. In lieu of a data type, void functions use the keyword "void." A void function performs a task, and then control returns back to the caller--but, it does not return a value. def function_name(arg1, arg2, arg3 ... argN):
# function body
import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()17 the data type for the result of a function that returns normally, but does not provide a result value to its caller. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() 18Lưu ý cách các giá trị được gán trong khi gọi hàm. Tuyên bố: |