Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Sử dụng dấu sao (Asterisks) trong Python

Ngôn ngữ lập trình Python sử dụng cả * và ** trong các ngữ cảnh khác nhau. Trong bài viết này, chúng ta sẽ thấy cách sử dụng hai ký hiệu này và các tình huống hữu ích tương ứng.

Là Toán tử Infix (Infix Operator)

Khi * được dùng như toán tử infix, nó cho tích toán học của các số. Trong ví dụ dưới đây, ta lấy số nguyên, số thực và số phức để nhân và lấy kết quả.

Ví dụ

# Số nguyên
x = 20
y = 10
z = x * y
print(z, "\n")

# Số thực
x1 = 2.5
y1 = 5.1
z1 = x1 * y1
print(z1, "\n")

# Số phức
x2 = 4 + 5j
y2 = 5 + 4j
z2 = x2 * y2
print(z2, "\n")

Kết quả

Chạy mã trên cho kết quả sau:

200
12.75
41j

Chúng ta cũng có thể dùng nó như toán tử infix để mở rộng chuỗi.

Ví dụ

chuoi = "Point-"
print(chuoi * 4, "\n")
danh_sach = [4, 5, 6]
print(danh_sach * 3, "\n")
tap = (9, 8, 7)
print(tap * 2)

Kết quả

Chạy mã trên cho kết quả sau:

Point-Point-Point-Point-
[4, 5, 6, 4, 5, 6, 4, 5, 6]
(9, 8, 7, 9, 8, 7)

Là Toán tử Prefix (Prefix Operator)

Chúng ta có thể dùng một dấu sao đơn làm tiền tố. Các ví dụ dưới đây mô tả các cách sử dụng nó như tiền tố.

Mở rộng Iterable (Expand an Iterable)

Một iterable như list hoặc tuple có thể được mở rộng chỉ bằng cách thêm dấu sao trước tên nó.

Ví dụ

ngay_trong_tuan = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
print(*ngay_trong_tuan)

Kết quả

Chạy mã trên cho kết quả sau:

Mon Tue Wed Thu Fri

Nhận số lượng đối số biến đổi (Take Variable Number of Arguments)

Chúng ta có thể đưa số lượng đối số biến đổi cho hàm sử dụng dấu sao đơn. Như chương trình dưới đây.

Ví dụ

def tong_nhieu_so(*args):
    ket_qua = 0
    # Duyệt qua tuple args của Python
    for x in args:
        ket_qua = ket_qua + x
    return ket_qua

print(tong_nhieu_so(1, 2))
print(tong_nhieu_so(11, 21, 30))
print(tong_nhieu_so(5.5, 0))

Kết quả

Chạy mã trên cho kết quả sau:

3
62
5.5

Sử dụng ** (Double Asterisk)

Dấu sao kép dùng cho đối số dựa trên từ khóa (keyword arguments). Ở đây đối số được truyền vào như từ điển chứ không phải giá trị riêng lẻ.

Ví dụ

def noi_cac_khoa(**kwargs):
    ket_qua = ""
    # Duyệt qua keys của kwargs dictionary
    for arg in kwargs.keys():
        ket_qua += arg
    return ket_qua

def noi_cac_gia_tri(**kwargs):
    ket_qua = ""
    # Duyệt qua values của kwargs dictionary
    for arg in kwargs.values():
        ket_qua += arg
    return ket_qua

print(noi_cac_khoa(ngay1="Mon-", ngay2="Tue-", ngay3="Wed-", ngay4="Thu-"))
print(noi_cac_gia_tri(ngay1="Mon-", ngay2="Tue-", ngay3="Wed-", ngay4="Thu-"))

Kết quả

Chạy mã trên cho kết quả sau:

ngay1ngay2ngay3ngay4
Mon-Tue-Wed-Thu-