Khi tôi lần đầu tiên bắt đầu lập trình bằng Python, điều này thường xuyên khiến tôi vấp ngã. Hy vọng rằng thông qua nỗi đau của mình, tôi đã tìm được cách truyền đạt khái niệm này đơn giản như thế nào Show
Làm việc với argsCác chức năng này cho phép bạn mở rộng chức năng của mình một cách ồ ạt, vì khi bạn thiết kế các chức năng, bạn không muốn giới hạn số lượng đầu vào cho chức năng ở một số lượng nhất định. Một ví dụ điển hình về hoạt động của các đối số là khi bạn đang xử lý các hàm thống kê như tổng và trung bình. Nếu bạn đã tạo một hàm chỉ có thể cộng một số này với một số khác, thì điều đó sẽ không hữu ích bằng việc thêm một số vào một phạm vi không xác định. Đây là nơi args đến Tôi sẽ chứng minh cách args được cấu trúc thông qua một hàm đơn giản và chúng ta sẽ giải cấu trúc hàm này Được rồi, những gì nó làm là như sau
Đây là một khái niệm mạnh mẽ vì nó có nghĩa là chúng ta có thể chuyển nhiều đối số không tên thuộc nhiều loại (chuỗi, số nguyên, dấu phẩy) cho hàm này và logic bên trong hàm sẽ tìm ra những việc cần làm với nó. Ở đây, nó chỉ đơn giản là in ra các giá trị, nhưng đây có thể là một hàm tóm tắt số, tôi sẽ thực hiện sau phần này Sau đó, chúng tôi thực hiện lệnh gọi này bằng cách sử dụng hàm trả về bên dưới First argument is this is my normal argument Passed another argument (*arg_values): additional argument 1 Passed another argument (*arg_values): additional argument 2 Passed another argument (*arg_values): additional argument 3 Về cơ bản, chúng tôi đã tìm ra cách để nắm bắt các đối số bổ sung được chuyển qua dấu hoa thị duy nhất kỳ diệu của chúng tôi. Hãy mở rộng điều này để tổng hợp các giá trị số Mở rộng các đối số để làm việc với các giá trị sốChúng ta sẽ mở rộng những gì chúng ta đã thực hành trong phần trước để xem cách chúng ta sẽ sử dụng args để tạo một hàm tính tổng tùy chỉnh Như bạn đã thấy - bạn thực sự không cần phải đặt tên cho các đầu vào của hàm *args chúng có thể là bất cứ thứ gì, miễn là chúng có tiền tố là dấu hoa thị. Chức năng này
Để gọi chức năng này, tôi chỉ cần chuyển các mục tôi muốn cộng lại với nhau # Use the new function print(summer_function(20,40,60,80,100)) Những gì được trả về bàn điều khiển là như sau <class 'tuple'> 300 Đơn giản đó là cách bạn có thể sử dụng các đối số để mở rộng sức mạnh của các chức năng của mình ngay lập tức. Trường hợp sử dụng tiếp theo chúng ta sẽ xem xét đối số từ khóa (**kwargs) Kwargs có liên quan gì đến nó?Xin lỗi vì tiêu đề Tina Turner cực kỳ tệ trên tiêu đề này. Đủ những lời lan man của tôi, kwargs là gì. Kwargs được truyền đối số công việc chính có khóa và giá trị, giống như cách bạn sẽ làm việc với từ điển Python Ở đây chúng ta sẽ triển khai một hàm xử lý nhiều đối số và chúng ta sẽ chuyển vào một số giá trị mà hàm chưa từng thấy trước đây Hãy phân tách chức năng này đang làm gì
Chạy chức năng chúng tôi nhận được working_with_kwargs(first_name='Gary', occupation='ML Engineer Lead', fav_food='Fish') Điều này tạo ra first_name=Gary His name is Gary occupation=ML Engineer Lead fav_food=Fish Item contains his favourite food Fish. Bởi vì chúng tôi có thể truy vấn theo khóa và giá trị, chúng tôi cũng có thể sử dụng logic có điều kiện để xem khi có kết quả khớp Thứ tự các đối số trong hàmThứ tự đúng của các đối số trong một hàm là như vậy
Chúng cần được chỉ định theo thứ tự này trong mọi chức năng Giải nén args và kwargsĐiều này có thể thực sự mạnh mẽ. Tôi sẽ chỉ cho bạn một số ví dụ về giải nén đối số từ args và kwargs sau đây Giải nén đối sốTrước tiên, chúng tôi sẽ tập trung vào việc giải nén các đối số, vì điều này cho phép bạn thực hiện các thao tác như hợp nhất nhiều danh sách có cùng kích thước hoặc chỉ đơn giản là chuyển một danh sách các giá trị. PyTorch sử dụng giải nén kwargs rất nhiều để chuyển cấu trúc từ điển của mạng nơ-ron sang mô hình, vì vậy sẽ rất hữu ích khi bắt đầu với các ví dụ này để hiểu rõ về cách giải nén các đối số của chúng ta Ví dụ đầu tiên tôi sẽ trình bày là cách giải nén một danh sách các giá trị và chuyển các đối số đã giải nén này dưới dạng các tham số riêng biệt vào một hàm tổng Có chuyện gì ở đây vậy?
Giải nén các đối số bằng cách hợp nhất danh sáchHãy sử dụng những gì chúng ta đã học trước đây để nối hai danh sách lại với nhau, đây là một cách mới lạ khác mà chúng ta có thể làm việc với các đối số giải nén Xin lỗi vì chơi chữ, nhưng hãy giải nén cái này
Đầu ra của mã này là 30 [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000, 27, 64, 125, 216, 343, 512, 729, 1000, 1331, 1728, 1000, 1331, 1728, 2197, 2744, 3375, 4096, 4913, 5832, 6859] Thats tất cả để có nó Giải nén kwargTrong ví dụ này, chúng tôi sẽ sử dụng động cơ tương tự như chúng tôi đã làm trước đây trong việc hợp nhất các danh sách, nhưng lần này chúng tôi sẽ sử dụng kwargs để hợp nhất hai từ điển lại với nhau. Hãy nhớ rằng kwargs có một khóa và giá trị liên quan đến các tham số đầu vào của chúng, vì vậy chúng hoạt động rất giống một từ điển trong Python Một lần nữa, một số yêu cầu giải nén – hãy dừng việc đó bằng cách chơi chữ
{'x1': 10, 'x2': 30, 'x3': 20, 'x4': 32} Tôi có xu hướng sử dụng giải nén kwarg rất nhiều khi làm việc với các mô hình PyTorch và Transformer, vì thông thường bạn có cấu hình mô hình hóa bên ngoài là một từ điển và bạn muốn chuyển từng tham số vào mô hình – bằng cách sử dụng model(**my_model_params) . Tiết kiệm thời gian như vậy Đóng cửaTôi hy vọng bạn đã tìm thấy bài viết này thông tin. Tôi nghĩ đến nó từ cách tôi thích học các khái niệm mới. Rút gọn chúng thành các thành phần đơn giản mà tôi biết và sau đó tìm hiểu xem từng giai đoạn đang làm gì Một hàm có thể có nhiều đối số trong Python không?Chúng ta có thể truyền nhiều đối số cho một hàm python bằng cách xác định trước các tham số hình thức trong định nghĩa hàm .
Một hàm có thể nhận nhiều đối số không?Hàm có thể chấp nhận nhiều đối số . Khi gọi một hàm, bạn có thể truyền nhiều đối số cho hàm; . Video này không có bất kỳ ghi chú nào.
Một hàm có thể chấp nhận Python bao nhiêu đối số?Trong Python, chúng ta có thể định nghĩa hai loại tham số có độ dài thay đổi. Chúng có thể được coi là các loại tham số tùy chọn đặc biệt. Nói cách khác, không có giới hạn về số lượng đối số được truyền cho tham số khi chúng ta gọi hàm này .
Hàm Python có thể có đối số không giới hạn không?Có. Bạn có thể sử dụng *args làm đối số không phải từ khóa. Sau đó, bạn sẽ có thể chuyển bất kỳ số lượng đối số nào . |