Hướng dẫn và ví dụ Python Function
1. Python Function
Hàm (function) là một khối lệnh đặc biệt, nó được đặt tên, giúp mã chương trình dễ đọc hơn, và có thể gọi để sử dụng ở các nơi khác nhau trong chương trình. Hàm chính là khối lệnh có thể tái sử dụng (reuseable).
Cú pháp:
** function syntax **
def functionName( parameters ):
"Mô tả ngắn về hàm"
codes ...
return [expression]
- Một hàm bắt đầu bởi từ khóa def (Viết tắt của từ define), theo sau đó là tên của hàm.
- Tiếp theo là danh sách các tham số nằm trong cặp đấu ngặc ( ) và dấu hai chấm ( : ), hàm có thể có 0, 1 hoặc nhiều tham số, các tham số cách nhau bởi dấu phẩy.
- Dòng đầu tiên của thân hàm (function body) là một chuỗi mô tả ngắn về hàm (Không bắt buộc).
Lệnh return:
Lệnh return dùng để trả về một giá trị (hoặc một biểu thức), hoặc đơn giản là trả về "không gì cả". Khi lệnh return được thực thi, hàm sẽ kết thúc. return là lệnh không bắt buộc phải có trong thân hàm.
Ví dụ | Mô tả |
return 3 | Hàm trả về một giá trị, và kết thúc |
return | Hàm trả về không gì cả, và kết thúc |
Tham số (Parameter):
Hàm có 0, 1 hoặc nhiều tham số. Ngăn cách nhau bởi dấu phẩy. Tham số có 4 loại:
- Tham số bắt buộc
- Tham số có mặc định (Default parameter)
- Tham số có độ dài biến (Variable-Length Parameter)
- Tham số từ khóa (Keyword Parameter)
2. Ví dụ với Function
Ví dụ một hàm có một tham số, và trả về "Không gì cả".
functionExample1.py
# Định nghĩa một hàm:
def sayHello(name) :
# Kiểm tra nếu name là rỗng (empty) hoặc null.
if not name :
print( "Hello every body!" )
# Nếu name không rỗng và không null.
else :
print( "Hello " + name)
# Gọi hàm, truyền tham số vào hàm.
sayHello("")
sayHello("Python");
sayHello("Java");
Output:
Hello every body!
Hello Python
Hello Java
Tiếp theo, ví dụ về một hàm có một tham số và có trả về giá trị.
functionExample2.py
# Định nghĩa một hàm:
def getGreeting(name) :
# Kiểm tra nếu name là rỗng hoặc null (None).
if not name :
# Trả về một giá trị.
# Và hàm sẽ kết thúc ở đây.
return "Hello every body!"
# Nếu name không rỗng và không null (Không None).
# đoạn code dưới đây sẽ được thực thi.
return "Hello " + name
# Gọi hàm, truyền tham số vào hàm.
greeting = getGreeting("")
print(greeting)
greeting = getGreeting("Python")
print(greeting)
Output:
Hello every body!
Hello Python
3. Hàm với tham số bắt buộc
Ví dụ dưới đây định nghĩa hàm showInfo, có 2 tham số, cả hai tham số này đều là bắt buộc. Khi bạn gọi hàm này bạn cần phải truyền 2 tham số vào cho hàm. Ngược lại chương trình sẽ ném ra lỗi.
requiredParameterExample.py
def showInfo(name, gender):
print ("Name: ", name);
print ("Gender: ", gender);
# Valid
showInfo("Tran", "Male")
# Invalid ==> Error!!
showInfo("Tran")
4. Hàm với tham số mặc định
Hàm có thể có nhiều tham số, bao gồm các tham số bắt buộc và các tham số có giá trị mặc định.
Hàm showInfo dưới đây có 3 tham số (name, gender = "Male", country = "US"):
- name là tham số bắt buộc.
- gender là tham số có giá trị mặc định "Male".
- country là tham số có giá trị mặc định "US".
defaultParameterExample.py
def showInfo(name, gender = "Male", country ="US"):
print ("Name: ", name)
print ("Gender: ", gender)
print ("Country: ", country)
# Valid
showInfo("Aladdin", "Male", "India")
print (" ------ ")
# Valid
showInfo("Tom", "Male")
print (" ------ ")
# Valid
showInfo("Jerry")
print (" ------ ")
# Valid
showInfo(name = "Tintin", country ="France")
print (" ------ ")
Output:
Name: Aladdin
Gender: Male
Country: India
------
Name: Tom
Gender: Male
Country: US
------
Name: Jerry
Gender: Male
Country: US
------
Name: Tintin
Gender: Male
Country: France
------
5. Hàm có tham số với độ dài thay đổi
Tham số với độ dài thay đổi (Variable-length Parameter) là một tham số đặc biệt. Khi gọi hàm, bạn có thể truyền (pass) 0, 1 hoặc nhiều giá trị ứng với tham số đó.
Chú ý: "Variable-length Parameter" luôn phải là tham số cuối cùng của hàm.
Chú ý: "Variable-length Parameter" luôn phải là tham số cuối cùng của hàm.
Ví dụ:
Hàm sumValues có 3 tham số:
- Tham số a, b là bắt buộc.
- Tham số *others là "Variable-Length Parameter".
variableLengthParameterExample.py
def sumValues(a, b, *others):
retValue = a + b
# Tham số 'others' giống như một mảng.
for other in others :
retValue = retValue + other
return retValue
Cách gọi hàm:
testVariableLengthParameter.py
from variableLengthParameterExample import sumValues
# Truyền vào: *others = []
a = sumValues(10, 20)
print("sumValues(10, 20) = ", a);
# Truyền vào: *others = [1]
a = sumValues(10, 20, 1);
print("sumValues(10, 20, 1 ) = ", a);
# Truyền vào: *others = [1,2]
a = sumValues(10, 20, 1, 2);
print("sumValues(10, 20, 1 , 2) = ", a);
# Truyền vào: *others = [1,2,3,4,5]
a = sumValues(10, 20, 1, 2,3,4,5);
print("sumValues(10, 20, 1, 2, 3, 4, 5) = ", a);
Output:
sumValues(10, 20) = 30
sumValues(10, 20, 1) = 31
sumValues(10, 20, 1, 2) = 33
sumValues(10, 20, 1, 2, 3, 4, 5) = 45
6. Hàm nặc danh
Các hàm được gọi là nặc danh (anonymous) nếu chúng không được định nghĩa theo cách thông thường bởi từ khóa def, mà sử dụng từ khóa lambda.
- Hàm nặc danh có thể có 0 hoặc nhiều tham số, nhưng trong thân hàm chỉ có duy nhất một biểu thức (expression). Giá trị của biểu thức chính là giá trị trả về của hàm. Nhưng không được sử dụng từ khóa 'return' ngay trước biểu thức.
- Danh sách các tham số cách nhau bởi dấu phẩy, và không được đặt trong cặp dấu ngặc tròn ( ).
- Trong thân của hàm nặc danh, bạn không thể truy cập các biến bên ngoài, bạn chỉ có thể truy cập các tham số của nó.
- Hàm nặc danh không thể gọi trực tiếp hàm print, bởi vì lambda đòi hỏi một biểu thức.
Cú pháp:
* syntax *
lambda [arg1 [,arg2,.....argn]] : expression
Ví dụ:
lambdaFunctionExample.py
# Khai báo một biến: hello = một hàm nặc danh và không có tham số.
hello = lambda : "Hello"
# Khai báo một biến: mySum = một hàm nặc danh có 2 tham số.
mySum = lambda a, b : a + b
a= hello()
print (a)
a = mySum(10, 20)
print (a)
Output:
Hello
30
Các hướng dẫn lập trình Python
- Tra cứu tài liệu Python
- Các lệnh rẽ nhánh trong Python
- Hướng dẫn và ví dụ Python Function
- Lớp và đối tượng trong Python
- Thừa kế và đa hình trong Python
- Hướng dẫn và ví dụ Python Dictionary
- Hướng dẫn và ví dụ Python Lists
- Hướng dẫn và ví dụ Python Tuples
- Hướng dẫn sử dụng Date Time trong Python
- Kết nối cơ sở dữ liệu MySQL trong Python sử dụng PyMySQL
- Hướng dẫn xử lý ngoại lệ trong Python
- Hướng dẫn và ví dụ String trong Python
- Giới thiệu về Python
- Cài đặt Python trên Windows
- Cài đặt Python trên Ubuntu
- Cài đặt PyDev cho Eclipse
- Quy ước và các phiên bản ngữ pháp trong Python
- Hướng dẫn lập trình Python cho người mới bắt đầu
- Vòng lặp trong Python
Show More