Bài tập

Hàm sum trong Python: Tận dụng code một cách thông minh

Huy Erick

Hàm là gì? Hàm trong Python là một tập hợp các khối code được viết ra nhằm cho việc tái sử dụng code. Khi bạn có một đoạn code tính tổng hai số chẳng hạn,...

Hàm là gì?

Hàm trong Python là một tập hợp các khối code được viết ra nhằm cho việc tái sử dụng code. Khi bạn có một đoạn code tính tổng hai số chẳng hạn, và bạn cần tính tổng hai số ở một vị trí khác, bạn lại phải viết lại đoạn code đã từng viết. Điều này tốn thời gian. Tuy nhiên, với khái niệm về hàm, chúng ta có thể tái sử dụng lại những đoạn code có chức năng giống nhau.

Khai báo hàm trong Python.

Để khai báo một hàm trong Python, chúng ta sử dụng từ khóa def với cú pháp như sau:

def ten_ham(param...):     # code

Trong đó:

  • ten_ham là tên của hàm mà bạn muốn đặt. Lưu ý: Tên hàm không được bắt đầu bằng số và không được chứa các ký tự đặc biệt trừ ký tự _.
  • param... là các tham số bạn muốn truyền vào hàm. Nếu không có tham số, để trống trường này.

Ví dụ 1: Mình sẽ khai báo một hàm in ra chữ "Welcome to toidicode.com!".

def say():     print("Welcome to toidicode.com")

Ví dụ 2: Mình sẽ khai báo một hàm tính tổng của 2 số bất kỳ do người dùng truyền vào.

def sum(a, b):     print("sum = " + str(a + b))

Trong ví dụ này, ab là tham số mà chúng ta truyền vào khi gọi hàm.

Gọi hàm.

Để gọi một hàm đã được khai báo, chúng ta sử dụng cú pháp sau:

ten_ham() # hoặc ten_ham(param...)

Trong đó:

  • ten_ham là tên của hàm mà chúng ta muốn gọi.
  • param... là các tham số chúng ta muốn truyền vào trong hàm.

Ví dụ 3: Mình sẽ gọi hàm say ở trong ví dụ 1.

def say():     print("Welcome to toidicode.com")  say() # Kết quả: Welcome to toidicode.com

Ví dụ 4: Mình sẽ gọi hàm sum ở trong ví dụ 2.

def sum(a, b):     print("sum = " + str(a + b))  # Tính tổng 2 số 4 và 5 sum(4, 5) # Kết quả: sum = 9  # Tính tổng 2 số 3 và 7 sum(3, 7) # Kết quả: sum = 10

Hàm có kết quả trả về.

Trong trường hợp bạn muốn sử dụng kết quả của hàm để thực hiện các mục đích khác, bạn chỉ cần thêm keyword return trước kết quả bạn muốn trả về.

Ví dụ: Mình sẽ khai báo lại hàm sum ở ví dụ 2 thành hàm có kết quả trả về.

def sum(a, b):     return a + b

Bây giờ khi muốn sử dụng kết quả của nó, ta có thể gán nó vào một biến hoặc một đối tượng và sử dụng như bình thường.

def sum(a, b):     return a + b  c = sum(4, 5) print("Tổng của 4 và 5 = " + str(c))

Tham số mặc định cho hàm.

Thông thường khi chúng ta khai báo hàm có tham số, nhưng lúc gọi hàm chúng ta lại không truyền tham số đó vào, chương trình sẽ báo lỗi.

Ví dụ: Giả sử mình có hàm tính tổng như sau.

def sum(a, b):     return a + b

Và mình sẽ cố tình gọi mà không truyền tham số vào hàm.

Nó sẽ báo lỗi là chúng ta đang thiếu 2 giá trị, bắt buộc phải truyền vào hàm.

Để hạn chế trường hợp này, trong Python cung cấp cho chúng ta thiết lập giá trị mặc định của tham số khi khai báo hàm. Bằng cách sử dụng dấu = với cú pháp như sau:

def ten_ham(param = defaultValue):     # code

Trong đó:

  • defaultValue là giá trị mặc định của tham số đó mà bạn muốn gán.

Ví dụ: Bây giờ mình sẽ khai báo lại hàm sum ở trên và gọi khi không truyền giá trị và khi có truyền giá trị.

Phạm vi của biến trong hàm.

Khi một biến được khai báo trong hàm, nó chỉ có thể được sử dụng trong hàm đó.

Ví dụ:

def say_hello():     a = "Hello"     print(a)  say_hello() print(a) # Lỗi: name 'a' is not defined

Chúng ta cũng không thể thay đổi giá trị của biến bình thường mà tác động ra bên ngoài hàm.

Ví dụ:

a = "Hello Guy!" def say(a):     a = "Toidicode.com"     print(a)  say(a) # Kết quả: Toidicode.com print(a) # Kết quả: Hello Guy!

Tuy nhiên, nếu biến có kiểu dữ liệu là list, chúng ta lại có thể làm được điều đó.

Ví dụ:

a = [5, 10, 15] def change(a):     a[0] = 1000     print(a)  change(a) # Kết quả: [1000, 10, 15] print(a) # Kết quả: [1000, 10, 15]

Biến Global.

Ngoài những cách hoạt động của biến mình đã trình bày ở phần trước, chúng ta còn có một cách nữa để có thể tác động đến các biến bên ngoài hàm khi đang ở trong hàm. Đó là sử dụng biến global - biến toàn cầu. Khi một biến là global, chúng ta có thể gọi và tác động đến nó từ bất kỳ đâu trong chương trình.

Để khai báo một biến là global, chúng ta chỉ cần thêm keyword global trước tên của nó.

Ví dụ: Mình sẽ thay đổi giá trị của biến khi ở trong hàm.

a = "Hello Guy!" def say():     global a     a = "Toidicode.com"     print(a)  say() # Kết quả: Toidicode.com print(a) # Kết quả: Toidicode.com

Truyền vô số tham số vào hàm.

Trên thực tế, không phải lúc nào chúng ta cũng biết được chính xác số lượng biến truyền vào trong hàm. Chính vì thế, Python cung cấp cho chúng ta khai báo một tham số đại diện cho các biến truyền vào hàm bằng cách thêm dấu * vào trước tham số đó.

Ví dụ: Mình sẽ khai báo hàm get_sum để tính tổng các tham số truyền vào.

def get_sum(*num):     tmp = 0     for i in num:         tmp += i     return tmp  result = get_sum(1, 2, 3, 4, 5) print(result) # Kết quả: 15

Lời kết.

Phần hàm này rất quan trọng và sẽ được sử dụng rất nhiều trong các phần sau. Vì vậy, các bạn cần chú ý và ôn luyện thật nhiều nhé!

1