* có nghĩa là gì trong đối số Python?

Nếu bạn chưa quen với python, một trở ngại mà bạn sẽ gặp phải trong quá trình học tập của mình là hiểu các biến ma thuật *args và **kwargs. Tôi cũng gặp khó khăn để hình dung cách chúng hoạt động 😅 khi tôi bắt đầu

 def args_kwargs[*args, **kwargs]:
      pass

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Các đối số Python *args và **kwargs ở khắp mọi nơi. Bạn có thể tìm thấy chúng trong mã nguồn của một trong những khung Python phổ biến nhất [Django].
Biến *args và **kwargs có thể viết dưới mọi hình thức. e. g *vars và **kvars cũng hợp lệ. Chỉ * [dấu hoa thị] là cần thiết.
Trong bài học này, tôi sẽ giải thích chúng là gì và cách sử dụng chúng 😎.

Sử dụng *args trong định nghĩa hàm

*args có thể được sử dụng trong định nghĩa hàm. Chúng cho phép người dùng gọi một hàm với một số đối số biến. Biến ở đây có nghĩa là bạn không biết trước có bao nhiêu đối số mà người dùng có thể truyền vào hàm của bạn, vì vậy trong trường hợp này, bạn sử dụng từ khóa *args. Những gì *args cho phép bạn làm là lấy nhiều đối số hơn số lượng đối số chính thức mà bạn đã xác định trước đó. Bên trong chúng được biểu diễn bằng cấu trúc dữ liệu tuple.
Lưu ý rằng trước số lượng đối số thay đổi, có thể xảy ra không hoặc nhiều đối số bình thường.

Một ví dụ thú vị cho việc sử dụng *args

def positions[first_arg, *args]:
    print[f"Type of *args is {type[args]}"] #print type of args
    print[f"first position arg:{first_arg}"]
    for arg in args:
        print[f"another arg through *args: {arg}"]

positions['first','second','third','forth']
#results
Type of *args is 
first position arg:first
another arg through *args: second
another arg through *args: third
another arg through *args: forth

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Sử dụng **kwargs trong định nghĩa hàm

Cú pháp đặc biệt **kwargs trong một định nghĩa hàm được sử dụng để chuyển một danh sách đối số có độ dài thay đổi, có từ khóa.
**kwargs cho phép bạn chuyển các đối số có độ dài biến đổi được từ khóa cho một hàm. Bên trong, chúng được biểu diễn bằng cấu trúc dữ liệu từ điển.
Đây là một ví dụ cơ bản để giải thích khái niệm này.

def items[**kwargs]:
    print[f"Type of **kwargs is {type[kwargs]}"] #print type of **kwargs
    #iterating over the keyword argument
    if kwargs is not None:
        for key, value in kwargs.items[]:
            print[f"{key} = {value}"]

items[a="basket", b="plate", c="soap"]
#results
Type of **kwargs is 
a = basket
b = plate
c = soap

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Từ các ví dụ trên, chúng ta có thể thấy rằng việc sử dụng *args và *kwargs mang lại cho các định nghĩa hàm của chúng ta sự linh hoạt khi chấp nhận số lượng đối số không giới hạn.
Hãy xem một số ví dụ về cách sử dụng **args** và **kwargs khi gọi một hàm.

*args có thể được sử dụng để giải nén các giá trị từ các đối tượng có thể lặp lại [danh sách, bộ] trong Python

def test_args_kwargs[arg1,arg2,arg3]:
     print[f"{arg1},{arg2},{arg3}"]

#using tuple
test_args_kwargs[*['first','second','third']]
#OR
test_args_kwargs[*['first','second','third']]

#results
first,second,third #unpacking tuple
first,second,third #unpacking list

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Trong khi **kwargs chỉ có thể được sử dụng để giải nén từ điển

# now with **kwargs:
kwargs = {"arg1": "first", "arg2": "second","arg3":"third"}
test_args_kwargs[**kwargs]
#results
arg1: first
arg2: second
arg3: third

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Thứ tự sử dụng *args **kwargs và formal args

Thứ tự chính xác cho các thông số của bạn là.
đối số tiêu chuẩn
*đối số args
**đối số kwargs

Hãy xem cách kết hợp các loại tham số khác nhau

#right
def my_func[args, *args, **kwargs]:
    pass

#wrong
def my_func[args, **kwargs, *args]:
    pass

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Phần thưởng
Chúng ta cũng có thể sử dụng * để thu thập các giá trị trong một nhiệm vụ.

first,*others = ["first","second","third"]
print[first,others, sep="\n"]
#results
first
['second', 'third']

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tôi hy vọng bây giờ bạn đã hiểu rõ về cách sử dụng *args và **kwargs khi định nghĩa hoặc gọi một hàm trong Python.
Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại bình luận bên dưới.

Tuần tới, tôi sẽ giải thích cách sử dụng Đa luồng và Đa xử lý để tăng tốc chương trình của bạn. ]. Vui lòng theo dõi tôi và bật thông báo của bạn. Cảm ơn bạn.
Vui vẻ viết mã. ✌

* có nghĩa là gì trong Python?

Toán tử dấu hoa thị [dấu sao] được sử dụng trong Python với nhiều hơn một nghĩa đi kèm với nó. Đối với kiểu dữ liệu số, * được sử dụng như toán tử phép nhân >>> a=10;b=20 >>> a*b 200 >>> a . 5; . 5; . 75 >>> a=2+3j; .

* trong danh sách tham số Python là gì?

Điều đó có nghĩa là [các] tham số xuất hiện sau * là tham số chỉ từ khóa .

Chủ Đề