1|7 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Bài 29: KIỂU DỮ LIỆU FUNCTION TRONG PYTHON - POSITIONAL VÀ KEYWORD ARGUMENT Xem học website để ủng hộ Kteam: Kiểu liệu Function Python - Positional keyword argument Mọi vấn đề lỗi website làm ảnh hưởng đến bạn thắc mắc, mong muốn khóa học mới, nhằm hỗ trợ cải thiện Website Các bạn vui lòng phản hồi đến Fanpage How Kteam nhé! Dẫn nhập Trong trước, Kteam giới thiệu đến bạn KIỂU DỮ LIỆU FUNCTION TRONG PYTHON Và Kteam lại tìm hiểu với bạn Kiểu liệu Function Python - Positional keyword argument Nội dung Để đọc hiểu tốt bạn cần: Copyright © Howkteam.com 2|7 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON Xem qua CÁCH CHẠY CHƯƠNG TRÌNH PYTHON Nắm CÁCH GHI CHÚ BIẾN TRONG PYTHON CÁC KIỂU DỮ LIỆU ĐƯỢC GIỚI THIỆU TRONG PYTHON CÂU ĐIỀU KIỆN IF TRONG PYTHON VÒNG LẶP WHILE VÒNG LẶP FOR TRONG PYTHON NHẬP XUẤT TRONG PYTHON Bạn Kteam tìm hiểu nội dung sau Positional argument keyword argument Bắt buộc (force) positional argument keyword argument Positional argument keyword argument Với hàm thông thường sau >>> def kteam(a, b): pass # lệnh giữ chỗ Thì ta pass argument vào cho hàm sau >>> kteam(3, 'Free Education') Trong ví dụ trên, hai giá trị số chuỗi ‘Free Education’ gọi positional argument Còn với trường hợp >>> kteam(a=3, b='Free Education') Copyright © Howkteam.com 3|7 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Thì hai giá trị (chính số chuỗi ‘Free Education’) keyword argument Sau điều nhỏ bạn cần phải biết Khi pass argument theo positional argument Thì argument gán LẦN LƯỢT cho parameter Riêng keyword argument Bạn tự gán giá trị cho parameter Vậy nên: >>> def kteam(a, b): print('a', a) print('b', b) >>> kteam(a=3,b=4) a3 b4 >>> kteam(b=3,a=4) a4 b3 Hai cách gọi hàm tương tự Một điều bạn không phép để positional theo sau (follow) keyword Có nghĩa bạn pass argument vừa positional keyword lúc được, positional buộc phải đứng trước keyword Trường hợp ngớ ngẩn Tèo sau cho bạn biết điều đó: >>> def teo_with_sone(name, verb): print('Teo', verb + 's', name) >>> teo_with_sone('Python', 'love') Teo loves Python >>> teo_with_sone('HTML', verb='like') Teo likes HTML >>> teo_with_sone(verb='like', 'CSharp') File "", line SyntaxError: positional argument follows keyword argument >>> teo_with_sone(name='Java', 'hate') File "", line Copyright © Howkteam.com 4|7 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM SyntaxError: positional argument follows keyword argument Bắt buộc (force) Positional argument keyword argument Keyword argument Trong Python, có số hàm bắt buộc phải pass argument cách rõ ràng rành mạch hàm sorted >>> sorted([3, 4, 1], reverse=True) [4, 3, 1] >>> sorted([3, 4, 1], True) Traceback (most recent call last): File "", line 1, in TypeError: must use keyword argument for key function Bạn thấy đấy, ta pass argument cho parameter reverse theo positional argument Việc thiết kế tiện lợi nhiều trường hợp nhiều parameter lúc có default argument value Hãy xem vấn đề sau mà Tèo mắc phải Tèo có hàm >>> def Teo(a, b=2, c=3, d=4): f = (a + d) * (b + c) print(f) >>> Teo(1) 25 >>> Teo(1, 2, 3, 5) Copyright © Howkteam.com 5|7 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM 30 Tèo gọi hàm thấy kết theo ý Giờ Tèo muốn đổi giá trị parameter d thành Nên Tèo phải truyền lại giá trị cho parameter b c Vậy, ta có cách khơng phải truyền lại hai giá trị cho parameter b c khơng? Có, keyword argument >>> Teo(1, d=5) 30 Đôi lúc, nên sử dụng keyword argument để tiện lợi rõ ràng Python cho phép tạo parameter nhận giá trị việc pass argument theo kiểu keyword argument Cú pháp def function (*, key_arg1, key_arg2): # function-block Khi tạo hàm mà có parameter * Thì Python hiểu khơng phải parameter mà syntax để biến parameter sau * thành keyword only argument (chỉ nhận giá trị theo kiểu keyword argument) Ví dụ dễ hiểu nhất! >>> def kteam(pos_or_key_arg, *, key_arg1, key_arg2): print(pos_or_key_arg) print(key_arg1) print(key_arg2) Copyright © Howkteam.com 6|7 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM >>> kteam(1, key_arg1=2, key_arg2='Kteam') Kteam >>> kteam(1, 2, key_arg2='Kteam') Traceback (most recent call last): File "", line 1, in TypeError: kteam() takes positional argument but positional arguments (and keyword-only argument) were given >>> kteam(1, 2, 'Kteam') Traceback (most recent call last): File "", line 1, in TypeError: kteam() takes positional argument but were given Lưu ý: ta thay dấu * *identifier Tuy nhiên phổ biến * Positional argument Bạn nhớ hàm input chứ? Kteam nói với bạn cú pháp hàm input viết input(prompt=None, /) Dấu / syntax để force parameter prompt trở thành positional only argument Có nghĩa bạn pass argument cho parameter prompt theo kiểu positional Chính xác dấu / biến parameter đứng trước thành positional only argument Tuy nhiên Kteam khơng sâu vào positional argument phiên Python 3.6.X trở không hỗ trợ positional only argument Lưu ý: 3.6.X trở không hỗ trợ nghĩa bạn cũ chút xíu 3.5, 3.4 có hỗ trợ Copyright © Howkteam.com 7|7 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Củng cố học Câu hỏi củng cố Câu hỏi: Dùng hàm help để xem cú pháp hàm sorted? Sau cho biết parameter positional only? Parameter keyword only? Đáp án phần trình bày Tuy nhiên, Kteam khuyến khích bạn tự trả lời câu hỏi để củng cố kiến thức thực hành cách tốt nhất! Kết luận Qua viết này, Bạn biết chút hàm Python qua khái niệm positional argument keyword argument Ở viết sau Kteam tiếp tục giới thiệu thêm với bạn HÀM TRONG PYTHON (FUNCTION) Cảm ơn bạn theo dõi viết Hãy để lại bình luận góp ý để phát triển viết tốt Đừng quên “Luyện tập – Thử thách – Khơng ngại khó” Copyright © Howkteam.com ... ĐƯỢC GIỚI THIỆU TRONG PYTHON CÂU ĐIỀU KIỆN IF TRONG PYTHON VÒNG LẶP WHILE VÒNG LẶP FOR TRONG PYTHON NHẬP XUẤT TRONG PYTHON Bạn Kteam tìm hiểu nội dung sau Positional argument keyword argument...2|7 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON Xem qua CÁCH CHẠY CHƯƠNG TRÌNH PYTHON Nắm CÁCH GHI CHÚ BIẾN TRONG PYTHON CÁC KIỂU DỮ LIỆU ĐƯỢC... tương tự Một điều bạn không phép để positional theo sau (follow) keyword Có nghĩa bạn pass argument vừa positional keyword lúc được, positional buộc phải đứng trước keyword Trường hợp ngớ ngẩn Tèo