Các list của variables được khai báo trong dấu ngoặc đơn vào thời điểm định nghĩa một function là các tham số chính thức . Và, các tham số này cũng được gọi là tham số vị trí . Một hàm có thể được định nghĩa với bất kỳ số lượng tham số chính thức nào.
Khi gọi một hàm −
Tất cả các tham số đều được yêu cầu.
Số lượng tham số thực phải bằng số lượng tham số chính thức.
Chúng lấy giá trị theo thứ tự định nghĩa.
Loại đối số phải khớp với nhau.
Tên của các tham số chính thức và tham số thực tế không nhất thiết phải giống nhau.
Hãy thảo luận về một số ví dụ về đối số vị trí −
Ví dụ dưới đây cho thấy việc sử dụng đối số vị trí.
def add(x,y): z = x+y print ("x={} y={} x+y={}".format(x,y,z)) a = 10 b = 20 add(a, b)
Nó sẽ tạo ra đầu ra sau đây −
x=10 y=20 x+y=30
Ở đây, hàm add() có hai tham số chính thức, cả hai đều là numeric . Khi hai số nguyên 10 và 20 được truyền vào hàm. Biến "a" nhận giá trị 10 và "b" nhận giá trị 20, theo thứ tự khai báo. Hàm add() hiển thị kết quả của phép cộng.
Python cũng sẽ phát sinh lỗi khi số lượng đối số không khớp. Nếu bạn chỉ cung cấp một đối số và kiểm tra kết quả, bạn sẽ thấy một lỗi.
def add(x,y): z=x+y print (z) a=10; add(a)
Lỗi được tạo ra sẽ như hình dưới đây −
TypeError: add() missing 1 required positional argument: 'y'
Tương tự, nếu bạn truyền nhiều hơn số lượng tham số chính thức, một lỗi sẽ được tạo ra với thông báo tương tự.
def add(x,y): z=x+y print ("x={} y={} x+y={}".format(x,y,z)) add(10, 20, 30)
Dưới đây là đầu ra −
TypeError: add() takes 2 positional arguments but 3 were given
Data type của các tham số thực tế và tham số chính thức tương ứng phải khớp. Thay đổi a thành một giá trị chuỗi và xem kết quả.
def add(x,y): z=x+y print (z) a="Hello" b=20 add(a,b)
Nó sẽ tạo ra lỗi sau −
z=x+y ~^~ TypeError: can only concatenate str (not "int") to str
Bảng dưới đây giải thích sự khác biệt giữa đối số vị trí và đối số từ khóa −
Positional Argument | Keyword Argument |
---|---|
Only the names of arguments are used to pass data to the given function. | Keyword arguments are passed to a function in name=value form. |
Arguments are passed in the order defined in function declaration. | While passing arguments, their order can be changed. |
Syntax: function(param1, param2,...) | Syntax: function(param1 = value1,...) |