1. Hàm (function) là gì?
Hàm (function) là một đoạn chương trình được đặt tên, có đầu vào và đầu ra. Hàm có chức năng giải quyết một số vấn đề chuyên biệt cho chương trình chính. Hàm có thể được gọi nhiều lần (tái sử dụng) với các tham số khác nhau.
Ví dụ:
def welcomeGochocit():
print("Hi all, Welcome to Gochocit.com!")
welcomeGochocit()
Kết quả
Hi all, Welcome to Gochocit.com!
2. Xây dựng hàm và gọi hàm trong Python
Cú pháp xây dựng hàm trong Python:
def function_name(parameters):
"""docstring"""
statement(s)
return expression
1. Sử dụng từ khóa def để khai báo và định nghĩa một hàm.
2. function_name là tên hàm. Các đặt tên hàm tuân thủ theo quy tắc đặt tên định danh (identifier).
3. parameters là các tham số mà cung cấp giá trị đầu vào cho hàm. Các tham số này có thể có hoặc không.
4. Kết thúc dòng khai báo hàm là dấu hai chấm :.
5. Thân hàm bắt đầu bằng thụt đầu dòng (indentation).
6. Có thể sử dụng docstring để mô tả chức năng của hàm. Docstring trong thân hàm có thể có hoặc không.
7. Trong thân hàm có thể có nhiều câu lệnh (statement). Mỗi câu lệnh bắt đầu bằng thụt đầu dòng (indentation).
8. Một hàm thì có thể có giá trị trả về với câu lệnh return. Nhưng không bắt buộc mỗi hàm đều phải có câu lệnh return.
def sum(a, b):
"""Plus a and b"""
c = a + b
return c
Trong ví dụ trên, tên hàm là sum với các tham số a và b. Docstring là “””Plus a and b”””. Hàm này sum này đơn giản nên chỉ có 1 câu lệnh là c = a + b
. Hàm có kết quả trả về với câu lệnh return c
.
Gọi hàm (function) trong Python
Để gọi hàm, chúng ta chỉ cần sử dụng tên hàm và truyền tham số thích hợp là được.
def sum(a, b):
"""Plus a and b"""
c = a + b
return c
num1 = 1
num2 = 9
s = sum(num1, num2)
print("sum = ", s)
Kết quả
sum = 10
Lưu ý: Hàm phải luôn luôn được định nghĩa trước khi gọi hàm, nếu không sẽ gây ra lỗi. Ví dụ:
hello()
def hello():
print("Hello all!")
Kết quả
NameError: name 'hello' is not defined.
3. Kiểu trả về của hàm trong Python
Lệnh return giúp trả về một giá trị hoặc nhiều giá trị từ hàm. Ví dụ:
def myFunction1():
val = 5.9
return val
a = myFunction1()
print("#Result of myFunction1")
print("a = ", a)
def myFunction2():
a = list(range(0, 5))
b = 10
return a, b, 9
x, y, z = myFunction2()
print("#Result of myFunction2")
print("x = ", x)
print("y = ", y)
print("z = ", z)
Kết quả
#Result of myFunction1
a = 5.9
#Result of myFunction2
x = [0, 1, 2, 3, 4]
y = 10
z = 9
Trong ví dụ trên, chúng ta thấy có thể một hàm (function) có thể trả về nhiều biến giá trị với câu lệnh return. Mỗi biến giá trị cách nhau bởi dấu phẩy ,.
Trong một số trường hợp, lệnh return được sử dụng để thoát khỏi hàm. Ví dụ:
def absoluteFunction(num):
"""This function returns the absolute
value of the entered number"""
if num >= 0:
return num
else:
return -num
print("#Result of absoluteFunction")
print(absoluteFunction(1))
print(absoluteFunction(-5))
def myFunction(num):
if(num<=0):
print("num must be greater than 0")
return
num = num * 5
print(num)
print("#Result of myFunction with num > 0")
myFunction(9)
print("#Result of myFunction with num <= 0")
myFunction(-1)
Kết quả
#Result of absoluteFunction
1
5
#Result of myFunction with num > 0
45
#Result of myFunction with num <= 0
num must be greater than 0
Trong ví dụ trên, hàm absoluteFunction
có lệnh return vừa giúp trả về giá trị cho hàm vừa làm thoát khỏi hàm. Hàm myFunction
thì lệnh return chỉ giúp thoát khỏi hàm mà không trả về giá trị cho hàm.
4. Hàm trong hàm (nested function) trong Python
Python cho phép định nghĩa một hàm bên trong một hàm khác. Chúng ta gọi là inner function hoặc nested function. Ví dụ:
def outerFunction(year):
name = 'Gochocit.com'
msg = 'Happy New Year'
#define an inner function
def innerFunction():
print(name, ", ", msg, ' ', year, ' to everyone!', sep='')
#call inner function
innerFunction()
y = 2022
outerFunction(y)
Kết quả
Gochocit.com, Happy New Year 2022 to everyone!
Các inner function có thể truy cập các biến trong outer function.