Python: Đối số và tham số hàm
Giải phóng thời gian, khai phóng năng lực
Bạn có thể gọi một hàm bằng cách sử dụng các loại đối số và tham số sau:
Đối số bắt buộc
Các đối số bắt buộc là các đối số được truyền cho một hàm theo đúng thứ tự vị trí của các tham số tại phần định nghĩa hàm. Ở đây, số lượng đối số trong lệnh gọi hàm phải khớp chính xác với định nghĩa hàm.
Trong ví dụ sau, để gọi hàm printme() thì ta cần phải truyền một đối số, nếu không nó sẽ gây ra lỗi cú pháp:
# định nghĩa hàm có một tham số def printMe(str): "in ra nội dung trong tham số str" print(str) return; # nhưng lời gọi hàm như sau là sai vì không có đối số printMe()
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Traceback (most recent call last): File "E:/Courses/Python/demo.py", line 8, in <module> printMe() TypeError: printMe() missing 1 required positional argument: 'str'
Tham số từ khóa
Các đối số từ khóa có liên quan đến các lệnh gọi hàm. Khi bạn sử dụng các đối số từ khóa trong một lệnh gọi hàm thì trình gọi sẽ xác định các đối số thông qua tên tham số.
Điều này cho phép ta bỏ qua các đối số hoặc đặt chúng không theo thứ tự vì trình thông dịch Python có thể sử dụng các từ khóa được cung cấp để đối sánh các giá trị với các tham số. Bạn cũng có thể truyền từ khóa đến hàm printMe() theo cách sau:
# định nghĩa hàm def printMe(str): print(str) return; # gọi hàm printMe() printMe(str = "I love Python")
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
I love Python
Ví dụ sau đây bạn sẽ thấy sự rõ ràng hơn về đối số từ khóa, trong đó thứ tự của các tham số không còn quan trọng.
def printInfo(name, age): print("Name:", name) print("Age:", age) return; printInfo(age=5, name="V1Study")
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Name: V1Study Age: 5
Tham số mặc định
Đối số mặc định là đối số giả định giá trị mặc định nếu giá trị không được cung cấp trong lệnh gọi hàm cho đối số đó. Ví dụ sau đây đưa ra một ý tưởng về các đối số mặc định, trong đó sẽ in ra giá trị mặc định của tham số age nếu nó không nhận được dữ liệu:
def printInfo(name, age = 6): print("Name:", name) print("Age:", age) return; printInfo(age=5, name="V1Study") printInfo(name="V1Study Academy") #thiếu đối số nhưng không bị lỗi
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Name: V1Study Age: 5 Name: V1Study Academy Age: 6
Tham số có độ dài thay đổi
Trong trường hợp định nghĩa một hàm cần nhận nhiều dữ liệu thì tức là ta cần khai báo nhiều tham số, lúc này ta sẽ thấy sự bất tiện vì mất khá nhiều thời gian. Python đưa ra giải pháp là sử dụng tham số có độ dài thay đổi. Các tham số này được gọi là tham số có độ dài thay đổi và không có tên trong định nghĩa hàm, không giống như các tham số bắt buộc và mặc định.
Cú pháp cho định nghĩa hàm với các tham số không phải từ khóa là như sau:
def functionname([formal_args,] *var_args_tuple ): "function_docstring" function_suite return [expression]
Dấu hoa thị (*) được đặt trước tên biến sẽ mang nghĩa nhận các giá trị của tất cả các đối số không có từ khóa. Bộ giá trị này được phép trống (tức không chứa giá trị nào). Sau đây là một ví dụ đơn giản
#định nghĩa hàm với yêu cầu phải nhận được ít nhất một dữ liệu: #arg1 là tham số bắt buộc phải nhận được dữ liệu #*vartuple là tham số không bắt buộc phải nhận được dữ liệu def printInfo(arg1, *vartuple): print("arg1:") print(arg1) print("Other parameters:") for var in vartuple: print(var) print("=============") return; printInfo(10) printInfo(20, 30, 40)
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
arg1: 10 Other parameters: ============= arg1: 20 Other parameters: 30 40 =============
Giải phóng thời gian, khai phóng năng lực