Computer >> Máy Tính >  >> Lập trình >> Python

* args và ** kwargs trong Python


Khi chúng ta xác định một hàm trong chương trình python, mục đích là thực thi mã lặp đi lặp lại bằng cách cung cấp các giá trị khác nhau cho các đối số của hàm. Một thách thức trong thiết kế này là, điều gì sẽ xảy ra nếu chúng ta không chắc chắn về số lượng đối số mà chúng ta muốn xử lý mỗi khi chúng ta gọi hàm đó. Đây là nơi mà các đối số đặc biệt được gọi là ** args và ** kwargs là cần thiết. Hãy xem xét từng cái một.

* args

* Args cho phép chúng ta sử dụng số lượng đối số thay đổi làm đầu vào cho hàm. Trong ví dụ dưới đây, chúng ta đang tìm ra kết quả của phép nhân một chuỗi số. Số lượng những con số này thay đổi mỗi khi chúng ta gọi hàm.

Ví dụ

def findproduct(*many_nums):
result = 1
for num in many_nums:
result = result * num
print("Multiplication result:",result)

findproduct(3,9)
findproduct(2,11,10)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

('Multiplication result:', 27)
('Multiplication result:', 220)

** kwargs

Tiếp theo, có các tình huống khi chúng ta muốn chuyển các đối số từ khóa, về cơ bản là các cặp khóa-giá trị làm đối số cho một hàm.

Ở đây một lần nữa, chúng ta có thể truyền số lượng biến của các đối số từ khóa như vậy cho hàm. Các đối số như vậy được đặt tên là ** kwargs. Xin lưu ý rằng có hai dấu hoa thị khi sử dụng các đối số như vậy. Trên thực tế, các đối số từ khóa như vậy được chuyển đến chương trình dưới dạng từ điển python chứa một số cặp khóa-giá trị.

Ví dụ

def country_details(**state_info):
   print('\n\n')
   for k,v in state_info.items():
      print("{} is {}".format(k,v))

country_details(StateName="Telangana", Capital="Hyderabad",Population=3400000)
country_details(StateName="Andhra Pradesh", Capital="Amaravati",Population=1000000,ForestCoverage="30%")

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

StateName is Telangana
Population is 3400000
Capital is Hyderabad

StateName is Andhra Pradesh
Population is 1000000
ForestCoverage is 30%
Capital is Amaravati