๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ฐœ๋ฐœ/Python

Advanced Python #4 [Notion : 1/3]

๐Ÿ‘‰ Asterisk

  • ํ”ํžˆ ์•Œ๊ณ ์žˆ๋Š” *๋ฅผ ๋งํ•จ
  • ๊ณฑ์…ˆ ๋ฐ ๊ฑฐ๋“ญ์ œ๊ณฑ ์—ฐ์‚ฐ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ
  • ๋ฆฌ์ŠคํŠธํ˜• ์ปจํ…Œ์ด๋„ˆ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต ํ™•์žฅํ•˜๊ณ ์ž ํ•  ๋•Œ
  • ๊ฐ€๋ณ€์ธ์ž (Variadic Arguments)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ
  • ์ปจํ…Œ์ด๋„ˆ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ Unpacking ํ•  ๋•Œ
# *args (= Asterisk arguments)
# args ๊ฐ€๋ณ€์ธ์ž๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ช…์‹œ๋œ params์„ ์ œ์™ธํ•˜๊ณ  packing๋˜์–ด tuple๋กœ ๋ฐ˜ํ™˜
def aa(a, *args):
	print(a, args)
	print(type(args))

aa(1,2,3,4,5,6)

# 1 (2,3,4,5,6)
# <class 'tuple'>
# **kargs (= Double Asterisk Keywords arguments)
# kargs ๊ฐ€๋ณ€์ธ์ž๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ช…์‹œ๋œ params๋ฅผ ์ œ์™ธํ•˜๊ณ ๋„ ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•ด์•ผํ•จ.
# ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜์ง€ ์•Š์„๊ฒฝ์šฐ Type Error๊ฐ€ ๋ฐœ์ƒํ•จ
# ๋ช…์‹œ๋œ params๋ฅผ ์ œ์™ธํ•˜๊ณ  packing๋˜์–ด dict๋กœ ๋ฐ˜
def bb(a, **kargs):
	print(a, kargs)
	print(type(kargs))

bb(1, b=2, c=3, d=4, e=5, f=6)
#1 {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
#<class 'dict'>
def aa(a, *args):               # aa(1, *(2,3,4,5,6))
    print(a, args[0])           # *args์— *(2,3,4,5,6)์„ unpackingํ•˜์—ฌ ์ „๋‹ฌ
    print(type(args))

aa(1, *(2,3,4,5,6))

# 1 2
# <class 'tuple'>
numbers = [1, 2, 3, 4, 5, 6]

# unpacking์˜ ์ขŒ๋ณ€์€ ๋ฆฌ์ŠคํŠธ ๋˜๋Š” ํŠœํ”Œ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ ธ์•ผํ•˜๋ฏ€๋กœ 
# ๋‹จ์ผ unpacking์˜ ๊ฒฝ์šฐ *a๊ฐ€ ์•„๋‹Œ *a,๋ฅผ ์‚ฌ์šฉ

*a, = numbers
# a = [1, 2, 3, 4, 5, 6]

*a, b = numbers
# a = [1, 2, 3, 4, 5]
# b = 6

a, *b, = numbers
# a = 1
# b = [2, 3, 4, 5, 6]

a, *b, c = numbers
# a = 1
# b = [2, 3, 4, 5]
# c = 6
def ast(a,b,c,d):
    print(a,b,c,d)

data = {"b":1, "c":2, "d":3}
ast(10, **data)

# 10 1 2 3 
for data in zip(*([1,2], [3,4], [5,6])):
    print(data)

# (1, 3, 5)
# (2, 4, 6)

'๊ฐœ๋ฐœ > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Advanced Python #5 [Notion : 1/4]  (0) 2023.04.30
Advanced Python #3 [Notion : 1/3]  (0) 2023.04.30
Advanced Python #2 [Notion : 1/3]  (0) 2023.04.30
Advanced Python #1 [Notion : 1/2]  (0) 2023.04.30