Cái nào là hàm void trong python?
Như bạn đã biết Hàm trả về các giá trị được gọi là Hàm không trống trong python còn được gọi là hàm hiệu quả trong python và các hàm không trả về gì được gọi là hàm loại void trong python hoặc hàm không hiệu quả trong Python Show
Nó phụ thuộc vào câu hỏi được hỏi hoặc yêu cầu bạn tạo chức năng theo cả hai cách. Lấy ví dụ, chúng ta phải tạo một hàm nhận một tham số kiểu số nguyên và giải quyết vấn đề của chúng ta có nghĩa là đưa ra kết quả là số của chúng ta là dương, âm hoặc bằng không. Nói cách khác, hàm python để tìm xem số đó là dương hay âm hay bằng không. Đối với điều này, hãy xem xét đoạn mã sau. Bạn cũng có thể chạy mã này ở đây Hàm là một trong những công cụ hữu ích nhất khi viết chương trình. Mọi ngôn ngữ lập trình kể cả Julia đều sử dụng hàm, hàm này có thể dùng để giữ cho mã đơn giản và dễ đọc hoặc để giữ an toàn cho chương trình khỏi sự can thiệp từ bên ngoài. Trong hầu hết mọi ngôn ngữ lập trình đều có hai loại hàm
chức năng hiệu quảĐây là những hàm trả về giá trị sau khi hoàn thành. Một hàm hiệu quả phải luôn trả về một giá trị cho nơi nó được gọi từ đó. Một hàm hiệu quả có thể trả về bất kỳ loại giá trị nào có thể là chuỗi, số nguyên, boolean, v.v. Hàm hiệu quả không nhất thiết phải trả về giá trị của một biến, giá trị được trả về có thể là một mảng hoặc một vectơ. Một hàm hiệu quả cũng có thể trả về nhiều giá trị ví dụ 1 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()67 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()68 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()70 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()71 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()72 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()73 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()74 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()75 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()680 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()682 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()683 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()684 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()685 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()686 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()687 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()71 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()689 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()690 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()691 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()692 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()693 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()694 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()695 đầu ra ví dụ 2 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()67 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()697 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()687 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()71 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()72 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()702 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()703 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()702 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()683 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()75 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()708 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()710 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()69 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()682 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()713 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()684 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()685 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()686 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()717 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()71 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()719 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()720 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()691 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()692 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()691 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()724 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()693 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()694 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()727 đầu ra Hàm trốngCác hàm trống là những hàm không trả về bất kỳ giá trị nào sau khi tính toán xong. Các loại hàm này được sử dụng khi việc tính toán của các hàm không cần thiết trong chương trình thực tế. Các loại chức năng này thực hiện các tác vụ quan trọng để chạy chương trình thành công nhưng không cung cấp một giá trị cụ thể sẽ được sử dụng trong chương trình Cho đến giờ trong khóa học này, chúng ta đã sử dụng các hàm dựng sẵn đi kèm với Python. Trong bài học này, chúng ta sẽ học cách tạo các chức năng của riêng mình. Nhưng trước khi làm điều đó, hãy dành thời gian tìm hiểu lý do tại sao chúng ta 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 sẽ không gặp vấn đề gì khi viết những chương trình như vậy; sum = 0 start = 10 end = 30 for i in range(start, end+1): sum += i print("Sum is", sum) Thử ngay bây giờ Chương trình này tính tổng của tất cả các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()7 đến import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8. Nếu chúng ta muốn tính tổng các số từ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9 đến Hello ! Today is 2017-06-20 13:20:45.2816510, chúng ta cần cập nhật chương trình như sau sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum) Như bạn có thể thấy cả hai phiên bản của chương trình gần như giống hệt nhau, điểm khác biệt duy nhất là ở giá trị của biến Hello ! Today is 2017-06-20 13:20:45.2816511 và Hello ! Today is 2017-06-20 13:20:45.2816512. Vì vậy, mỗi khi chúng ta muốn tính tổng của hai số, chúng ta cần cập nhật mã nguồn của chương trình. Sẽ tốt hơn nếu bằng cách nào đó chúng ta 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 Chức năng là gì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 định nghĩa một hàm như sau ________số 8 Một chức năng bao gồm hai phần. tiêu đề và cơ thể. Tiêu đề hàm bắt đầu bằng từ khóa Hello ! Today is 2017-06-20 13:20:45.2816513, 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 ( Hello ! Today is 2017-06-20 13:20:45.2816514) Hello ! Today is 2017-06-20 13:20:45.2816513 là từ khóa dành riêng, vì vậy bạn không nên sử dụng nó làm tên biến hoặc tên hàm trong chương trình của mình. Hello ! Today is 2017-06-20 13:20:45.2816516 có thể là bất kỳ số nhận dạng hợp lệ nào. Sau tên hàm, chúng ta có một danh sách các đối số bên trong dấu ngoặc đơn được phân tách bằng dấu phẩy ( Hello ! Today is 2017-06-20 13:20:45.2816517). Chúng tôi sử dụng các đối số này để truyền dữ liệu cần thiết cho hàm. Một hàm có thể nhận bất kỳ số lượng đối số nào hoặc không có đối số nào. Nếu hàm không chấp nhận bất kỳ đối số nào thì dấu ngoặc đơn được để trống Trong dòng tiếp theo, chúng ta có một khối câu lệnh hoặc thân hàm. Thân hàm chứa các câu lệnh định nghĩa chức năng làm gì. Như thường lệ, Python sử dụng thụt lề câu lệnh để xác định thời điểm khối bắt đầu và kết thúc. Tất cả các câu lệnh trong phần thân của hàm hàm phải được thụt lề bằng nhau nếu không bạn sẽ gặp lỗi cú pháp Đặc biệt chú ý đến câu lệnh cuối cùng trong thân hàm i. e Hello ! Today is 2017-06-20 13:20:45.2816518. Câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 được sử dụng để trả về một giá trị từ hàm. Câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 là không bắt buộc, một số hàm trả về giá trị trong khi hàm khác thì không. Nếu một hàm không có câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 trong phần thân thì từ khóa dành riêng import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 sẽ tự động được trả về. import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 thực sự là một đối tượng có kiểu dựng sẵn import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()84. Đừng lo lắng nếu bạn thấy câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 khó hiểu; Đây là chức năng nhỏ in ngày giờ hiện tại cùng với lời chào python101/Chương-13/first_function. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3 Thử ngay bây giờ Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 không chấp nhận bất kỳ đối số nào, đó là lý do tại sao dấu ngoặc đơn được để trống. Thân hàm chứa hai câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88. Hai câu lệnh này sẽ được thực thi khi chúng ta gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87. Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 không trả về bất kỳ giá trị nào Chức năng gọiMột định nghĩa hàm tự nó không làm gì cả. Để sử dụng một chức năng, chúng ta phải gọi nó. Cú pháp gọi hàm như sau import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8 Nếu hàm không chấp nhận bất kỳ đối số nào thì hãy sử dụng cú pháp sau Đoạn mã sau gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()0 python101/Chương-13/calling_first_function. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet() Thử ngay bây giờ đầu ra Hello ! Today is 2017-06-20 13:20:45.281651 Lời gọi hàm phải xuất hiện sau khi hàm được định nghĩa, nếu không, bạn sẽ gặp phải ngoại lệ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()32. Ví dụ python 101/Chương-13/gọi trước khi định nghĩa. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()8 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()3 Khi một hàm được gọi, điều khiển chương trình sẽ nhảy tới định nghĩa hàm đó và thực thi các câu lệnh bên trong thân hàm. Sau khi thực hiện phần thân của hàm, điều khiển chương trình sẽ nhảy trở lại phần chương trình được gọi là hàm và tiếp tục thực hiện tại thời điểm đó Ví dụ sau minh họa điều gì sẽ xảy ra khi một hàm được gọi python101/Chương-13/transfer_of_control. py sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)0 Thử ngay bây giờ đầu ra sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)1 Trong các dòng 3-5, chúng tôi đã định nghĩa một câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87. Câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 ở dòng 7, in chuỗi import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()35 ra bàn điều khiển. Ở dòng 8, chúng ta đang gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87. Tại thời điểm này, việc thực thi các câu lệnh sau lệnh gọi tới import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 tạm dừng và điều khiển chương trình chuyển sang định nghĩa của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87. Sau khi thực hiện phần thân của chương trình điều khiển chức năng import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 lại nhảy trở lại điểm mà nó dừng lại và tiếp tục thực hiện từ đó Chương trình trước đây của chúng tôi chỉ có chức năng. Không có gì lạ khi các chương trình có hàng trăm, thậm chí hàng nghìn chức năng. Trong python, quy ước chung là định nghĩa một hàm có tên là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00, hàm này được gọi khi chương trình bắt đầu. Hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00 này sau đó tiếp tục gọi hàm khác khi cần. Chương trình sau minh họa luồng điều khiển chương trình khi chúng ta có hai chức năng trong một chương trình python101/Chương-13/hai_func_program_control. py sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)2 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)3 Thử ngay bây giờ Trong các dòng 3-5 và 8-11, chúng ta đã định nghĩa hai hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00. Hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 hiện được cập nhật để chấp nhận một đối số có tên là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)05, sau đó hàm này sẽ 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)00 không chấp nhận bất kỳ đối số nào và có ba câu lệnh bên trong phần thân Câu lệnh ở dòng 13, gọi hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00. Điều khiển chương trình nhảy đến phần thân của hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00. Câu lệnh đầu tiên bên trong chuỗi ________ 500 in chuỗi ________ 510 ra bàn điều khiển. Câu lệnh ở dòng 10, gọi hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 với đối số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)12 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)05 trong tiêu đề hàm. Tại thời điểm này, việc thực thi các câu lệnh sau lệnh gọi tới import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 tạm dừng và điều khiển chương trình nhảy tới phần thân của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87. Sau khi thực hiện phần thân của hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87, điều khiển chương trình sẽ nhảy trở lại nơi nó dừng lại và thực thi câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 ở dòng 11. Vì không còn câu lệnh nào để thực thi trong hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)00 và bộ điều khiển chương trình sẽ nhảy trở lại nơi nó dừng lại để thực hiện các câu lệnh sau lệnh gọi hàm (dòng 13) Biến cục bộ, biến toàn cục và phạm viPhạm vi biến đổi. Phạm vi của một biến đề cập đến một phần của chương trình mà nó có thể được truy cập Biến chúng ta tạo bên trong hàm được gọi là biến cục bộ. Các biến cục bộ chỉ có thể được truy cập bên trong phần thân của hàm mà nó được định nghĩa. Nói cách khác, phạm vi của biến cục bộ bắt đầu từ thời điểm chúng được xác định và tiếp tục cho đến khi kết thúc hàm. Các biến cục bộ có thể được thu gom rác ngay sau khi chức năng kết thúc. Do đó, cố gắng truy cập một biến cục bộ bên ngoài phạm vi của nó sẽ dẫn đến lỗi Ở đầu kia của quang phổ, chúng ta có các biến Toàn cầu. Biến toàn cục là các biến được định nghĩa bên ngoài bất kỳ hàm nào. Phạm vi của biến toàn cục bắt đầu từ thời đ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/Chương-13/biến_scope. py sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)4 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)5 Thử ngay bây giờ đầu ra sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)6 Ở dòng 1, chúng ta đã tạo một biến toàn cục có tên là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)19. Sau đó, nó được truy cập ở dòng 12, bên trong hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20 và ở dòng 17, bên ngoài hàm. Chúng tôi cũng đã khai báo một biến cục bộ có tên là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)21 bên trong hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20. Sau đó, nó được truy cập bên trong hàm ở dòng 9 Hãy xem điều gì xảy ra, nếu chúng ta cố gắng truy cập một biến cục bộ bên ngoài hàm. Để làm như vậy, bỏ ghi chú mã trong dòng 19 và chạy lại chương trình đầu ra 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)23 cho chúng ta biết rằng không có biến nào có tên sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)21 tồn tại trong phạm vi này Điều gì xảy ra nếu chúng ta có các biến cục bộ và biến toàn cục cùng tên? ví dụ 2 python 101/Chương-13/cùng _global_ và_local. py sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)8 Thử ngay bây giờ đầu ra Ở đây chúng ta có một biến toàn cục sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)25 ở dòng 1 và một biến cục bộ cùng tên bên trong hàm ở dòng 4. Bất cứ khi nào có xung đột giữa biến cục bộ và biến toàn cục bên trong hàm, biến cục bộ sẽ được ưu tiên. Đây là lý do tại sao hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 (dòng 5) in ra giá trị của biến cục bộ sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)25. Tuy nhiên, bên ngoài hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)25 đề cập đến biến toàn cục sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)25 Chúng ta cũng có thể sử dụng các tên biến giống nhau trong các hàm khác nhau mà không xung đột với nhau python101/Chương-13/same_variable_names_in_different_functions. py sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)9 def function_name(arg1, arg2, arg3 .. argN): # function body ...0 Thử ngay bây giờ đầu ra def function_name(arg1, arg2, arg3 .. argN): # function body ...1 Vượt qua đối sốĐối số không là gì ngoài một phần dữ liệu được truyền cho hàm, khi nó được gọi. Như đã nói trước đây, một hàm có thể nhận bất kỳ số lượng đối số nào hoặc không có đối số nào. Ví dụ: hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 chấp nhận một hoặc nhiều đối số nhưng hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)31 không chấp nhận Muốn một hàm nhận đối số thì khi gọi nó trước tiên ta phải định nghĩa một hoặc nhiều tham số. Tham số hoặc biến tham số chỉ đơn giản là một biến trong tiêu đề hàm nhận đối số khi hàm được gọi. Cũng giống như biến cục bộ, phạm vi của biến tham số chỉ giới hạn trong phần thân của hàm. Đây là một ví dụ về một hàm chấp nhận một đối số duy nhất def function_name(arg1, arg2, arg3 .. argN): # function body ...2 Khi hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)32 được gọi với một đối số, giá trị của đối 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)25 và câu lệnh import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 in ra giá trị của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)25 sau khi thêm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9 vào nó Chương trình sau minh họa cách gọi một hàm có đối số python 101/Chương-13/đối số chức năng. py def function_name(arg1, arg2, arg3 .. argN): # function body ...3 Thử ngay bây giờ đầu ra Ở dòng 6, hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)32 được gọi với đối số import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9. 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)25 ví dụ 2. Hàm tính giai thừa của một số python101/Chương-13/giai thừa. py def function_name(arg1, arg2, arg3 .. argN): # function body ...4 def function_name(arg1, arg2, arg3 .. argN): # function body ...5 Thử ngay bây giờ đầu ra Giai thừa của một số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)40 được định nghĩa là phép nhân của tất cả các chữ số từ 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)40 def function_name(arg1, arg2, arg3 .. argN): # function body ...6 trong đó sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)43 biểu thị giai thừa của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)40. Dưới đây là một số ví dụ def function_name(arg1, arg2, arg3 .. argN): # function body ...7 Bây giờ, hãy xem vòng lặp for hoạt động như thế nào khi giá trị của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)40 là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)46 Trước khi vòng lặp for bắt đầu sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)47 không được xác định sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)48 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)49Sau lần lặp đầu tiên_______550 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)51 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)52Sau lần lặp thứ 2 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)53 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)54 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)55Sau lần lặp thứ 3 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)56 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)57 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)58Sau lần lặp thứ 4 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)59 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)60 sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)61 Sau khi vòng lặp thứ 4 kết thúc và hàm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 in giai thừa của số ví dụ 3. Truyền nhiều đối số cho hàm python 101/Chương-13/nhiều đối số. py def function_name(arg1, arg2, arg3 .. argN): # function body ...8 Thử ngay bây giờ đầu ra def function_name(arg1, arg2, arg3 .. argN): # function body ...9 Khi hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)63 được gọi ở dòng 8, đối số import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()7 được truyề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)65 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)66 được truyề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)67 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ịNhớ lại rằng mọi thứ trong Python đều 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ỉ mà 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ố, nó là địa chỉ của đối tượng được lưu trữ trong đối số được truyền cho biến tham số. Tuy nhiên, để đơn giản, chúng tôi nói rằng giá trị của đối số được truyền cho tham số trong khi gọi hàm. Cơ chế này được gọi là Pass By Value. Xem xét ví dụ sau import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()30 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()31 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)68 giống 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)69 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)70 tham chiếu đến 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)69 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)70 đều trỏ đến cùng một vị trí bộ nhớ nơi đối tượng sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)73 ( import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9) được lưu trữ Hành vi này có hai hậu quả quan trọng
Hãy kiểm tra hành vi này bằng cách lấy một số ví dụ ví dụ 1. Truyền các đối tượng không thay đổi để hoạt động python101/Chương-13/passing_immutable_objects. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()32 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()33 Ở dòng 7, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20 đượ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)69 (trỏ đến một đối tượng không thể thay đổi là sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)73). Giá trị của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)69 được truyền cho tham số sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)70. 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)70 được tăng thêm bởi import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9 (dòng 3). Khi chức năng kết thúc, câu lệnh in ở 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)82 được in ra bàn điều khiển. Điều này chứng minh rằng bất kể chức năng nào thực hiện với sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)70, giá trị của sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)69 vẫn giữ nguyên Nếu bạn nghĩ về nó, hành vi này có ý nghĩa hoàn hảo. Nhớ lại rằng không thể thay đổi nội dung của các đối tượng bất biến. Vì vậy, bất cứ khi nào chúng ta gán một giá trị số nguyên mới cho một biến, về cơ bản, chúng ta đang tạo một đối tượng sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)73 hoàn toàn mới và đồng thời gán tham chiếu của đối tượng mới cho biến đó. Đây chính xác là những gì đang xảy ra bên trong hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20 ví dụ 2. Truyền các đối tượng có thể thay đổi để hoạt động python101/Chương-13/passing_mutable_objects. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()34 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()35 Mã gần như giống nhau, nhưng ở đây chúng tôi đang chuyển một danh sách cho hàm thay vì một số nguyên. Vì danh sách là một đối tượng có thể thay đổi, do đó, những thay đổi được thực hiện bởi hàm sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)20 ở dòng 2, sẽ ảnh hưởng đến đối tượng được trỏ bởi biến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)69 Đối số vị trí và từ khóaCác đối số cho một hàm có thể được truyền theo hai cách
Trong phương thức đầu tiên, chúng ta truyền các đối số cho một hàm theo thứ tự như các tham số tương ứng của chúng trong tiêu đề hàm. Chúng tôi đã sử dụng phương thức này để truyền đối số cho các hàm của mình. Ví dụ python 101/Chương-13/bộ ba pythagore. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()36 Thử ngay bây giờ Câu lệnh sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)89 chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)91, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)46 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)93 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)94 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)95, và in ra sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)96. Tuy nhiên, câu lệnh sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)97, chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 sang cơ sở, sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)94 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)93 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)46 đến sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)95 và in ra def function_name(arg1, arg2, arg3 .. argN): # function body ...03, sai. Vì vậy, khi sử dụng các đối số vị trí, hãy luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi hàm và thứ tự của các tham số trong tiêu đề hàm khớp với nhau. Nếu không, bạn có thể nhận được kết quả mong đợi Một cách khác để truyền đối số cho hàm là sử dụng Đối số từ khóa. Trong phương thức này, chúng tôi chuyển từng đối số theo mẫu sau trong đó def function_name(arg1, arg2, arg3 .. argN): # function body ...04 là tên của biến tham số trong tiêu đề hàm và def function_name(arg1, arg2, arg3 .. argN): # function body ...05 là 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ự của các đố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 để chúng ta có thể gọi hàm def function_name(arg1, arg2, arg3 .. argN): # function body ...06 bằng các đối số từ khóa import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()37 Thử ngay bây giờ Các đối số từ khóa hơi linh hoạt vì chúng ta không phải nhớ thứ tự của các tham số trong tiêu đề hàm Trộn các đối số Vị trí và Từ khóaChúng ta cũng có thể kết hợp các đối số vị trí và đối số từ khóa trong một lệnh gọi hàm. 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 lệnh gọi sau hoàn toàn hợp lệ vì trong cả hai lệnh gọi, các đố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()38 Thử ngay bây giờ Tuy nhiên, chúng ta không thể làm điều này import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()39 Thử ngay bây giờ Vấn đề ở đây là đối số vị trí ( sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)94) xuất hiện sau đối số từ khóa ( def function_name(arg1, arg2, arg3 .. argN): # function body ...08). Cố gắng gọi def function_name(arg1, arg2, arg3 .. argN): # function body ...06 theo cách này dẫn đến lỗi sau import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()80 Giá trị trả vềCho đến thời điểm này, chúng tôi đã tạo các hàm không trả về bất kỳ giá trị nào, các hàm như vậy còn được gọi là hàm void Để trả về giá trị từ một hàm, chúng ta sử dụng câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519. Cú pháp của nó là Dấu ngoặc vuông ( def function_name(arg1, arg2, arg3 .. argN): # function body ...11) xung quanh def function_name(arg1, arg2, arg3 .. argN): # function body ...12 chỉ ra rằng nó là tùy chọn. Nếu bỏ qua một giá trị đặc biệt import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 được trả lại Khi gặp câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 bên trong một hàm, hàm đó sẽ kết thúc và giá trị của def function_name(arg1, arg2, arg3 .. argN): # function body ...12 theo sau từ khóa Hello ! Today is 2017-06-20 13:20:45.2816519 được gửi trở lại phần chương trình đã gọi hàm đó. Câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 có thể xuất hiện ở bất kỳ đâu trong phần thân của hàm. Các hàm trả về giá trị được gọi là hàm trả về giá trị Đây là một ví dụ import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()81 Một hàm có thể được gọi theo hai cách, tùy thuộc vào việc chúng có trả về giá trị hay không Nếu một hàm trả về một giá trị thì lời gọi hàm đó có thể được sử dụng làm toán hạng trong bất kỳ biểu thức nào trong chương trình. Ví dụ Thử ngay bây giờ Trong biểu thức trên, trước tiên chúng ta gọi hàm def function_name(arg1, arg2, arg3 .. argN): # function body ...18, sau đó gán giá trị trả về của hàm cho biến def function_name(arg1, arg2, arg3 .. argN): # function body ...19. Nếu chúng tôi không sử dụng câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 trong hàm def function_name(arg1, arg2, arg3 .. argN): # function body ...18, chúng tôi sẽ không thể viết mã này. Dưới đây là một số cách khác mà chúng ta có thể gọi hàm def function_name(arg1, arg2, arg3 .. argN): # function body ...18 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 Thử ngay bây giờ Chúng tôi không bị ràng buộc sử dụng giá trị trả về từ hàm. Nếu chúng ta không muốn sử dụng giá trị trả về, chỉ cần gọi hàm dưới dạng câu lệnh. Ví dụ Trong trường hợp này, giá trị trả về của def function_name(arg1, arg2, arg3 .. argN): # function body ...18 đơn giản là bị loại bỏ Hãy viết lại chương trình giai thừa của chúng ta để trả về giai thừa thay vì in nó python 101/Chương-13/trả về giai thừa. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()83 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()84 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()85 Trong ví dụ trên, chúng tôi đang trả về một giá trị số nguyên từ hàm, nhưng chúng tôi có thể sử dụng bất kỳ loại dữ liệu nào sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)73, def function_name(arg1, arg2, arg3 .. argN): # function body ...25, def function_name(arg1, arg2, arg3 .. argN): # function body ...26, def function_name(arg1, arg2, arg3 .. argN): # function body ...27; . Chương trình sau đây trình bày cách trả về loại def function_name(arg1, arg2, arg3 .. argN): # function body ...27 từ hàm python101/Chương-13/is_even_or_odd. py sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)2 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()87 Thử ngay bây giờ Đầu ra lần chạy đầu tiên import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()88 Lần chạy thứ 2 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()89 Nếu biểu thức theo sau là từ khóa Hello ! Today is 2017-06-20 13:20:45.2816519 bị bỏ qua thì giá trị đặc biệt import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 được trả về python 101/Chương-13/không trả về. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()00 Thử ngay bây giờ đầu ra Chúng ta cũng có thể sử dụng câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 nhiều lần bên trong hàm nhưng ngay khi gặp câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 đầu tiên, hàm sẽ kết thúc và tất cả các câu lệnh theo sau nó không được thực thi. Ví dụ python 101/Chương-13/máy tính lớp. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()01 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()02 Thử ngay bây giờ Đầu ra chạy đầu tiên import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()03 Đầu ra lần chạy thứ hai import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()04 Hàm Void trả về Không cóTrong Python, các hàm void hơi khác so với các hàm trong C, C++ hoặc Java. Nếu thân hàm không có bất kỳ câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 nào thì giá trị đặc biệt import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 đượ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()82 là một chữ của loại import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()84 đượ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()82 python 101/Chương-13/hàm void. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()05 Thử ngay bây giờ đầu ra Đảm bảo đủ. Hàm def function_name(arg1, arg2, arg3 .. argN): # function body ...18 thực sự trả về import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82. Vì vậy, chúng ta có thể nói rằng trong Python, tất cả các hàm đều trả về giá trị cho dù bạn có sử dụng câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 hay không. Tuy nhiên, điều này không có nghĩa là bạn có thể sử dụng hàm void giống như hàm trả về giá trị. Xem xét ví dụ sau python101/Chương-13/using_void_function_as_non_void_function. py import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()06 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()07 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 ...18 i. e import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()82 vào số nguyên import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()9, nhưng thao tác không thành công vì thao tác def function_name(arg1, arg2, arg3 .. argN): # function body ...44 không thể thêm import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()84 vào sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)73 Đó là lý do tại sao một hàm void thường được gọi dưới dạng một câu lệnh 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 ( Hello ! Today is 2017-06-20 13:20:45.2816517) sau từ khóa Hello ! Today is 2017-06-20 13:20:45.2816519 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()08 Khi gọi một hàm trả về nhiều giá trị, số biến ở vế trái của toán tử def function_name(arg1, arg2, arg3 .. argN): # function body ...49 phải bằng số giá trị mà câu lệnh Hello ! Today is 2017-06-20 13:20:45.2816519 trả về. Vì vậy nếu một hàm trả về 2 giá trị thì bạn phải sử dụng 2 biến ở vế trái của toán tử def function_name(arg1, arg2, arg3 .. argN): # function body ...49. Đây là một ví dụ python 101/Chương-13/trả về nhiều giá trị. py def function_name(arg1, arg2, arg3 .. argN): # function body ...4 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()0 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()1 Lưu ý cách các giá trị được gán trong khi gọi hàm. tuyên bố import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()2 gán số nhỏ hơn cho biến def function_name(arg1, arg2, arg3 .. argN): # function body ...52 và số lớn hơn cho biến def function_name(arg1, arg2, arg3 .. argN): # function body ...53 Đối số mặc địnhTrong Python, chúng ta có thể định nghĩa một hàm với các giá trị tham số mặc định, giá trị mặc định này sẽ được sử dụng khi một hàm được gọi mà không có bất kỳ đối số nào. Để chỉ định giá trị mặc định cho tham số, chỉ cần chỉ định giá trị bằng toán tử gán theo sau là tên tham số. Xem xét ví dụ sau python 101/Chương-13/đặt giá trị mặc định. py def function_name(arg1, arg2, arg3 .. argN): # function body ...4 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()4 Thử ngay bây giờ đầu ra import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()83 import datetime def greet(): print("Hello !") print("Today is", datetime.datetime.now()) greet()6 Trong dòng 7, chúng tôi đang gọi hàm def function_name(arg1, arg2, arg3 .. argN): # function body ...54 mà không có bất kỳ đối số nào, vì vậy các giá trị mặc định def function_name(arg1, arg2, arg3 .. argN): # function body ...55 và sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)90 sẽ được gán cho các tham số def function_name(arg1, arg2, arg3 .. argN): # function body ...57 và def function_name(arg1, arg2, arg3 .. argN): # function body ...58 tương ứng Trong dòng 8, chúng tôi đang gọi def function_name(arg1, arg2, arg3 .. argN): # function body ...54 bằng cách chuyển sum = 0 start = 100 end = 200 for i in range(start, end+1): sum += i print("Sum is", sum)46 đến def function_name(arg1, arg2, arg3 .. argN): # function body ...57 và def function_name(arg1, arg2, arg3 .. argN): # function body ...62 đến def function_name(arg1, arg2, arg3 .. argN): # function body ...58. Vì các giá trị cho cả hai tham số được cung cấp trong khi gọi hàm, giá trị mặc định sẽ không được sử dụng trong trường hợp này. Điều này cũng đúng với cuộc gọi def function_name(arg1, arg2, arg3 .. argN): # function body ...54 ở dòng 9, ngoại trừ ở đây chúng tôi đang sử dụng đối số từ khóa Trong dòng 10, chúng tôi chỉ cung cấp giá trị cho tham số def function_name(arg1, arg2, arg3 .. argN): # function body ...57 bằng cách sử dụng đối số từ khóa, do đó, giá trị mặc định cho tham số def function_name(arg1, arg2, arg3 .. argN): # function body ...58 sẽ được sử dụng Cái nào là hàm void?Các hàm trống được tạo và sử dụng giống như các hàm trả về giá trị ngoại trừ việc chúng không trả về giá trị sau khi hàm thực thi . Thay cho kiểu dữ liệu, hàm void sử dụng từ khóa "void. " Hàm void thực hiện một tác vụ và sau đó điều khiển trả về trình gọi--nhưng, nó không trả về giá trị.
Hàm void() là gì?khoảng trống (C++)
. Khi được sử dụng cho danh sách tham số của hàm, void chỉ định rằng hàm không nhận tham số. Khi được sử dụng trong phần khai báo con trỏ, void xác định rằng con trỏ là "phổ quát. "When used as a function return type, the void keyword specifies that the function doesn't return a value. When used for a function's parameter list, void specifies that the function takes no parameters. When used in the declaration of a pointer, void specifies that the pointer is "universal."
Main() có phải là hàm void không?Trong C++, kiểu trả về mặc định của hàm main là void, i. e. main() sẽ không trả lại bất cứ thứ gì . Nhưng, trong C kiểu trả về mặc định của main là int, i. e. main() sẽ trả về một giá trị số nguyên theo mặc định. Trong C, void main() không có cách sử dụng (hợp pháp) được xác định và đôi khi nó có thể đưa ra kết quả rác hoặc lỗi.
In có phải là hàm void trong Python không?Không trả về giá trị , giống như trả về Không có. Bạn sẽ không tìm thấy nó một cách rõ ràng trong tài liệu vì các hàm trả về Không chỉ đơn giản là bỏ qua việc ghi lại giá trị trả về. Lưu câu trả lời này. |