Trong hướng dẫn ngắn này, chúng ta sẽ thấy các cách khác nhau mà Asterisk Operator có thể làm cho cuộc sống Pythonic của chúng ta trở nên dễ dàng
Hình ảnh tham khảo
Có rất nhiều lần chúng ta thấy các toán tử * và ** được sử dụng trong Python. Nhiều Lập trình viên Python dù ở trình độ trung cấp vẫn thường bối rối khi nhắc đến ký tự dấu hoa thị [*] trong Python
Sau khi nghiên cứu bài viết này, bạn sẽ có hiểu biết vững chắc về toán tử dấu hoa thị [*] trong Python và trở thành một lập trình viên giỏi hơn trong quá trình này
Chúng ta đã biết chức năng nhân của *. Hãy xem xét nhanh
phép nhân đơn giản
print[5*4]20
Giá trị mũ của bất kỳ giá trị số nguyên nào
print[2**2]4
Nhân một danh sách
list = ['name '] * 5
print[list]['name ', 'name ', 'name ', 'name ', 'name ']
Sử dụng ít được biết đến
Trước khi bắt đầu, bạn nên biết
đối số vị trí. là các đối số có thể được gọi theo vị trí của chúng trong định nghĩa hàm
Đối số từ khóa. là các đối số có thể được gọi bằng tên của chúng
Đối số bắt buộc. là các đối số phải được truyền cho hàm
đối số tùy chọn. là các đối số không thể truyền cho hàm
Trường hợp 1. Giải nén một hàm bằng cách sử dụng đối số vị trí
Phương pháp này rất hữu ích khi in dữ liệu của bạn ở định dạng thô [không có bất kỳ dấu phẩy và dấu ngoặc nào]. Nhiều lập trình viên cố gắng loại bỏ dấu phẩy và dấu ngoặc bằng cách sử dụng tổ hợp các hàm, do đó, dấu hoa thị tiền tố đơn giản này có thể giải quyết vấn đề của bạn khi giải nén chúng
arr = ["Monday","Tuesday","Wed","Thurs"]
print[" ".join[map[str,arr]]]
print[*arr]Monday Tuesday Wed Thurs
Monday Tuesday Wed Thurs
Như bạn có thể thấy, cả dòng 2 của đoạn mã trên và dòng 3 đều cho cùng một kết quả, dòng 3 của mã sử dụng dấu hoa thị dễ dàng hơn nhiều so với bất kỳ dòng nào khác
Trường hợp 2. Truyền một Hàm với số lượng đối số tùy ý bằng cách sử dụng *
Dấu hoa thị đơn [*] cũng có thể được sử dụng trong *args. Nó được sử dụng để truyền một số đối số biến cho một hàm, nó chủ yếu được sử dụng để truyền đối số không khóa và danh sách đối số có độ dài thay đổi. Ghi chú. LẬP LUẬN KHÔNG CHÍNH XÁC
Hãy xem với một ví dụ
def addition[*args]:
return sum[args]
print[addition[8,9,7,0]]24
Trường hợp 3. Truyền một Hàm với một số tùy ý của một đối số vị trí
Dấu hoa thị kép [ ** ] cũng được sử dụng như **kwargs, dấu hoa thị kép cho phép chuyển đối số từ khóa. Biểu tượng đặc biệt này được sử dụng để truyền đối số từ khóa và danh sách đối số có độ dài thay đổi
def food[**kwargs]:
for item in kwargs:
print[f"{item} is a {kwargs[item]}"]
food[cherry="fruit",cabbage="vegetable",soya="protein"]cherry is a fruit
cabbage is a vegetable
soya is a protein
Đi qua như từ điển
def food[**kwargs]:kwargs và args
for item in kwargs:
print[f"{item} is a {kwargs[item]}"]
dict = {"cherry":"fruit","cabbage":"vegetable","soya":"protein"}
food[**dict]cherry is a fruit
cabbage is a vegetable
soya is a protein
Trong các trường hợp trên, chúng ta đã thấy việc sử dụng kwargs và args, bây giờ hãy xem chi tiết kwargs và args là gì với các ví dụ và các cách khác nhau để sử dụng chúng trong mã
Trong Python, chúng ta có thể truyền một số đối số biến [không cố định] cho một hàm bằng các ký hiệu đặc biệt. Có hai biểu tượng đặc biệt được sử dụng cho việc này
Các ký hiệu đặc biệt được sử dụng để chuyển biến số. lập luận. -
1. ] * lập luận. cho các đối số không phải từ khóa
2. ]**kwargs. cho các đối số từ khóa
Do đó, [*]/*args/**kwargs được sử dụng làm ký tự đại diện cho đối số của hàm khi chúng ta nghi ngờ về số lượng đối số mà chúng ta nên truyền vào một hàm
Ví dụ cho *args
Sử dụng args cho một số lượng đối số thay đổi
def var_arg[*argv]:
for arg in argv:
print[arg]
var_arg["Ram","Sita","Ravan","Lakshman","Hanuman","Mandodri"]Ram
Sita
Ravan
Lakshman
Hanuman
Mandodri
Sử dụng *args cho một đối số phụ + số lượng đối số thay đổi
________số 8_______Vậy, **kwargs là gì??
**kwargs trong định nghĩa hàm được sử dụng để chuyển danh sách đối số có độ dài thay đổi được từ khóa. Chúng tôi sử dụng tên kwargs với ngôi sao đôi. Lý do là dấu sao kép cho phép chúng tôi chuyển qua các đối số từ khóa [và bất kỳ số nào trong số chúng]
Người ta có thể coi kwargs như một cuốn từ điển ánh xạ từng từ khóa với giá trị mà chúng ta chuyển qua nó. Đó là lý do tại sao khi chúng tôi lặp lại các kwargs, dường như không có bất kỳ thứ tự nào mà chúng được in ra