Hướng dẫn sử dụng 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 **
1 2 3 4 | 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)
Ví dụ một hàm có một tham số, và trả về "Không gì cả".
functionExample1.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # Đị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" ); |
Tiếp theo, ví dụ về một hàm có một tham số và có trả về giá trị.
functionExample2.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Đị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) |
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
1 2 3 4 5 6 7 8 9 10 11 | def showInfo(name, gender): print ( "Name: " , name); print ( "Gender: " , gender); # Valid showInfo( "Tran" , "Male" ) # Invalid ==> Error!! showInfo( "Tran" ) |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 ( " ------ " ) |
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
1 2 3 4 5 6 7 8 9 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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); |
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 *
1 | lambda [arg1 [,arg2,.....argn]] : expression |
Ví dụ:
lambdaFunctionExample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 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) |