Kiểu dữ liệu Function trong Python - Positional và keyword argument

0

Positional argument và keyword argument

Với một hàm thông thường như sau
>>> def kteam(a, b): ...     pass # lệnh giữ chỗ.
0
1
2
Thì ta có thể pass argument vào cho hàm như sau
>>> kteam(3, 'Free Education')
0
Trong ví dụ trên, hai giá trị là số 3 và chuỗi ‘Free Education’ gọi là positional argument.
Còn với trường hợp dưới đây
>>> kteam(a=3, b='Free Education')
0
Thì hai giá trị trên (chính là số 3 và chuỗi ‘Free Education’) là những keyword argument.
Sau đây là những điều tuy nhỏ nhưng bạn cần phải biết. Khi pass argument theo positional argument. Thì các argument sẽ được gán LẦN LƯỢT cho các parameter. Riêng đối với keyword argument. Bạn đã tự mình gán giá trị cho các parameter. Vậy nên:

Hai cách gọi hàm trên đều tương tự như nhau.

Một điều nữa là bạn không được phép để positional theo sau (follow) keyword.
Có nghĩa là bạn có thể pass argument vừa positional và keyword cùng một lúc được, nhưng những positional buộc phải đứng trước keyword.

Bắt buộc (force) Positional argument và keyword argument

Keyword argument

Trong Python, có một số hàm bắt chúng ta buộc phải pass argument một cách rõ ràng rành mạch như hàm sorted.
ta không thể pass argument cho parameter reverse theo positional argument.
Việc thiết kế này cũng rất tiện lợi vì nhiều trường hợp nhiều parameter cùng một lúc đều có default argument value. Hãy xem vấn đề sau đây mà Tèo mắc phải.
vd :

Đôi lúc, chúng ta nên sử dụng keyword argument để tiện lợi và rõ ràng.
Python cho phép chúng ta tạo ra các parameter chỉ nhận giá  trị bằng việc pass argument theo kiểu keyword argument.

Cú pháp



def function (*, key_arg1, key_arg2):
# function-block
Khi tạo một hàm mà có một parameter *. Thì Python sẽ hiểu đó không phải là parameter mà chính là syntax để rồi nó biến các parameter sau * thành các keyword only argument (chỉ nhận giá trị theo kiểu keyword argument)
Ví dụ là dễ hiểu nhất!

Lưu ý: ta có thể thay thế dấu bằng *identifier. Tuy nhiên phổ biến vẫn là *.

Positional argument

input(prompt=None, /)
Dấu / chính là một syntax để force parameter prompt trở thành positional only argument. Có nghĩa là bạn chỉ có thể pass argument cho parameter prompt theo kiểu positional. Chính xác thì dấu sẽ biến các parameter đứng trước nó thành positional only argument
Tuy nhiên ở phiên bản Python 3.6.X trở đi không hỗ trợ positional only argument.
Lưu ý: 3.6.X trở đi không hỗ trợ không có nghĩa những bạn cũ hơn một chút xíu như 3.5, 3.4 có hỗ trợ.

Kết luận

Qua bài viết này, đã nắm được Khái quát Kiểu dữ liệu Function trong Python - Positional và keyword argument
Nguồn:www.howkteam.vn
Tags

Post a Comment

0Comments
Post a Comment (0)