Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การใช้งาน Asterisk (* และ **) ใน Python

Python ใช้ * (single asterisk) และ ** (double asterisk) ในบริบทหลายอย่าง

1. Infix Operator (คูณ / ซ้ำ)

# ตัวเลข
print(20 * 10)        # 200
print(2.5 * 5.1)      # 12.75
print((4+5j) * (5+4j)) # 41j

# Sequence repetition
print("Point-" * 4)           # Point-Point-Point-Point-
print([4,5,6] * 3)            # [4,5,6,4,5,6,4,5,6]
print((9,8,7) * 2)            # (9,8,7,9,8,7)

2. Prefix Operator: Unpacking (แตก sequence)

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

# ใน function call
def greet(a, b, c):
    print(a, b, c)

greet(*['Hello', 'World', '!'])  # Hello World !

3. Variable Positional Arguments (*args)

def many_sums(*args):
    return sum(args)

print(many_sums(1, 2))           # 3
print(many_sums(11, 21, 30))     # 62
print(many_sums(5.5, 0))         # 5.5

4. Keyword Arguments (**kwargs)

def join_keys(**kwargs):
    return ''.join(kwargs.keys())

def join_values(**kwargs):
    return ''.join(kwargs.values())

print(join_keys(day1="Mon-", day2="Tue-", day3="Wed-"))  # day1day2day3
print(join_values(day1="Mon-", day2="Tue-", day3="Wed-")) # Mon-Tue-Wed-

5. ใช้ร่วมกันใน Function Definition

def demo(a, b, *args, **kwargs):
    print("a,b:", a, b)
    print("args:", args)
    print("kwargs:", kwargs)

demo(1, 2, 3, 4, 5, x=10, y=20)
# a,b: 1 2
# args: (3, 4, 5)
# kwargs: {'x': 10, 'y': 20}

สรุป

  • * → positional: unpack sequence, *args
  • ** → keyword: unpack dict, **kwargs
  • ทำให้ฟังก์ชันยืดหยุ่น รับอาร์กิวเมนต์ได้ไม่จำกัด