Chap 4 - FUNCTIONS

Bạn chắc đã quen với các hàm print(), input(), len() từ những chương trước. Python cung cấp một số chức năng đi kèm giống như vậy, nhưng bạn cũng có thể viết nó cho riêng mình. Một chức năng giống như một chương trình nhỏ ở trong một chương trình.

Để hiểu rõ hơn cách mà function làm việc, chúng ta hãy tạo một function. Gõ chương trình này vào trong trình chỉnh sửa tập tin và lưu lại giống như helloFunc.py:
❶ def hello():
❷     print('Howdy!')
       print('Howdy!!!')
       print('Hello there.')
❸ hello()
   hello()
   hello()
Dòng đầu tiên là hàm def, đó là hàm định nghĩa tên của hàm là hello() . Khối lệnh sau hàm def là phần thân chính của hàm. Mã lệnh này sẽ thực hiện khi hàm được gọi lên, không phải hàm đã định nghĩa từ trước.

hàm hello() là hàm gọi đặc trưng, Trong mã lệnh, cách gọi hàm chỉ là tên của hàm theo sau bởi dấu ngoặc đơn.Có thể kết hợp một vài tham số trong dấu ngoặc đơn. Khi chương trình xử lý đến những hàm được gọi này, chương trình sẽ nhảy tới dòng đầu tiên của hàm và bắt đầu xử lý lệnh trong đó. Khi chương trình xử lý xong hàm, bộ xử lý sẽ quay về dòng mà đã gọi hàm đó và tiếp tục xử lý xuyên suốt giống như trước.

Khi mà chương trình này gọi hàm helllo() 3 lần, mã lệnh trong hàm helllo() được xử lý 3 lần. Khi bạn chạy chương trình này, chương trình xuất ra trông như thế này:
Howdy!
Howdy!!!
Hello there.
Howdy!
Howdy!!!
Hello there.
Howdy!
Howdy!!!
Hello there.
một mục đích quan trọng hơn của hàm là để nhóm mã lệnh với nhau để xử lý nhiều lần. Không định nghĩa một hàm, bạn sẽ phải chép và dán mã lệnh mỗi lần sử dụng.

Nói chung, bạn luôn muốn tránh sự trùng lặp khi viết mã, bởi vì nếu bạn từng quyết định cập nhật mã lệnh -- giả sử, để ví dụ, bạn tìm một lỗi cần khắc phục-- bạn sẽ phải nhớ để thay đổi mã lệnh ở bất kỳ đâu mà bạn từng sao chép nó.

Khi bạn có nhiều kinh nghiệm lập trình, bạn sẽ thường tìm mã lệnh trùng lặp, điều đó có nghĩa nhận được việc thoát khỏi trùng lặp hoặc chép và dán mã lệnh. Không trùng lặp làm cho chương trình của bạn ngắn hơn, dễ nhìn hơn và dễ cập nhật hơn.

Hàm def và tham số đi cùng

Khi bạn gọi hàm print() hoặc len(), bạn bỏ qua giá trị, trong trường hợp này gọi là tham số, bằng việc đặt chúng vào trong ngoặc đơn. Bạn cũng có thể định nghĩa tham số cho hàm riêng của chính mình. Gõ ví dụ này vào trình chỉnh sửa bà lưu lại là helloFunc2.py:
❶ def hello(name):
❷     print('Hello ' + name)

❸ hello('Alice')
  hello('Bob')
Khi bạn chạy chương trình, chương trình trả kết quả như dưới đây:
Hello Alice
Hello Bob
Đó là việc định nghĩa hàm hello() trong chương trình trên có tham số được gọi là name .
Một điểm đặc biệt về tham số cần lưu ý là giá trị được lưu trong một tham số sẽ không được nhớ khi hàm số gọi trở lại. Để minh họa, nếu bạn thêm print(name) vào sau hello('Bob') trong chương trình vừa rồi, chương trình sẽ đưa cho bạn một thông báo NameError bởi vì không có một biến số nào được đặt tên là name. Biến số này sẽ bị hủy sau khi hàm hello('Bob') gọi lại, vậy print(name) sẽ đưa ra đề nghị rằng biến số name đó không tồn tại.

đây là cách tương tự để hiểu biến số của chương trình bị lãng quên khi chương trình đó kết thúc. Tôi sẽ nói nhiều hơn về tại sao điều đó xảy ra trong những phần sau.

Giá trị return và hàm return     

Khi bạn gọi hàm len() và thông qua nó một thông số ví dụ như 'Hello'

continues...



 


Comments

Popular Posts