Python cho phép truyền các đối số hàm dưới dạng từ khóa, còn được gọi là đối số có tên. Variables trong function definition được sử dụng làm từ khóa. Khi hàm được gọi, bạn có thể chỉ định rõ ràng tên và giá trị của nó.
Ví dụ sau đây minh họa các đối số từ khóa trong Python. Trong lần gọi hàm thứ hai, chúng ta đã sử dụng các đối số từ khóa.
# Function definition is here def printinfo( name, age ): "This prints a passed info into this function" print ("Name: ", name) print ("Age ", age) return # Now you can call printinfo function # by positional arguments printinfo ("Naveen", 29) # by keyword arguments printinfo(name="miki", age = 30)
Nó sẽ tạo ra output −
Name: Naveen Age 29 Name: miki Age 30
Theo mặc định, hàm gán các giá trị cho các tham số theo thứ tự xuất hiện. Tuy nhiên, khi sử dụng tham số theo tên (keyword arguments), không cần phải tuân theo thứ tự của các tham số chính thức trong định nghĩa hàm. Việc sử dụng tham số theo tên là tùy chọn. Bạn có thể sử dụng cách gọi hỗn hợp. Bạn có thể truyền giá trị cho một số tham số mà không cần tên, và cho những tham số khác với tên.
Hãy cùng cố gắng hiểu với sự trợ giúp của định nghĩa hàm sau đây −
def division(num, den): quotient = num/den print ("num:{} den:{} quotient:{}".format(num, den, quotient)) division(10,5) division(5,10)
Vì các giá trị được gán theo vị trí, đầu ra sẽ như sau −
num:10 den:5 quotient:2.0 num:5 den:10 quotient:0.5
Thay vì truyền các giá trị bằng đối số vị trí, hãy gọi hàm với các đối số từ khóa −
def division(num, den): quotient = num/den print ("num:{} den:{} quotient:{}".format(num, den, quotient)) division(num=10, den=5) division(den=5, num=10)
Khác với các đối số theo vị trí, thứ tự của các đối số từ khóa không quan trọng. Do đó, nó sẽ tạo ra đầu ra sau đây −
num:10 den:5 quotient:2.0 num:10 den:5 quotient:2.0
Tuy nhiên, các tham số vị trí phải đứng trước các tham số từ khóa khi sử dụng cách gọi hỗn hợp.
Hãy thử gọi hàm division() với các tham số từ khóa cũng như tham số vị trí.
def division(num, den): quotient = num/den print ("num:{} den:{} quotient:{}".format(num, den, quotient)) division(num = 5, 10)
Vì đối số vị trí không thể xuất hiện sau các đối số từ khóa, Python sẽ báo lỗi sau:
division(num=5, 10) ^ SyntaxError: non-keyword arg after keyword arg