ν¨μ / *args, **kwargs / generator, yield
ν¨μ
-
ν¨μλ? μ λ ₯κ°μλ°μμμΆλ ₯κ°μλ΄μ΄λλκ²
- μ λ ₯ => [ν¨μ] => μΆλ ₯
-
κΈ°λ³Ένν
def ν¨μλͺ (맀κ°λ³μ): μνν λ¬Έμ₯1 μνν λ¬Έμ₯2 ...
*args / **kwargs
-
맀κ°λ³μ(parameter) / μΈμ(arguments)
-
맀κ°λ³μ : ν¨μμ μ λ ₯μΌλ‘ μ λ¬λ κ°μ λ°λ λ³μ
-
μΈμ : ν¨μλ₯Ό νΈμΆν λ μ λ¬νλ μ λ ₯κ°
def add(a, b) # 맀κ°λ³μ return a + b print(add(1, 2)) # μΈμ
-
-
*args : μ λ ₯κ°μ΄ λͺ κ°κ° λ μ§ λͺ¨λ₯Ό λ
def ν¨μλͺ (*맀κ°λ³μ){ μνν λ¬Έμ₯ ... }
-
μΈμλ νν ννλ‘ λ³ν, 맀κ°λ³μμ μ μ₯λ¨
def test(*args): for i in args: print(i) test(1, 2, 3, 4) ### μΆλ ₯κ²°κ³Ό ### 1 ### 2 ### 3 ### 4
def add_sub(choice, *args): if choice == "add": res = 0 for i in args: res = res + i elif choice == "sub": res = 1 for i in args: res = res - i return res res = add_sub('add', 1, 2, 3, 4, 5) print(res) res = add_sub('sub', 10, 1) print(res) ### μΆλ ₯κ²°κ³Ό ### 15 ### -10
a, *b = [1, 2, 3, 4] print(a) print(b) ### μΆλ ₯κ²°κ³Ό ### 1 ### [2, 3, 4] def test(a, *b): return a, b print(test(1, 2, 3, 4)) ### μΆλ ₯κ²°κ³Ό ### (1, (2, 3, 4))
-
-
**kwargs
-
μΈμλ λμ λ리 ννλ‘ λ³ν, 맀κ°λ³μμ μ μ₯λ¨
-
(ν€μλ = κ°)
ννλ‘λ§ ν¨μ νΈμΆ κ°λ₯def info(**kwargs): print(kwargs) info(name="μ΄κ°μ", age="20") ### μΆλ ₯κ²°κ³Ό ### {'name': 'μ΄κ°μ', 'age': '20'}
-
맀κ°λ³μμ μ΄κΉκ° μ€μ νκΈ°
-
def ν¨μλͺ (맀κ°λ³μ=κ°): μνν λ¬Έμ₯
-
μ΄κΈ°νμν€κ³ μΆμ 맀κ°λ³μλ νμ 맨 λ€μ μμΉν΄μΌ νλ€. κ·Έλ μ§ μμΌλ©΄ μλ¬ λ°μ
def add(a, b=10): print(a+b) add(5) ### μΆλ ₯ > 15 add(5, 5) ### μΆλ ₯ > 10 ### def add(a=10, b): ### print(a+b) ### > μλ¬!
generator / yield
-
generator : λ©λͺ¨λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©νλ©΄μ λ°λ³΅μ μννλλ‘ λλ κ°μ²΄
-
yield : μνλ κ° λ¦¬ν΄, μ€ν νλ¦μ μΌμ μ μ§νμ¬ ν¨μλ₯Ό μ¬νμ©ν μ μλ μνλ‘ λ§λ¦
def gen(n): while n>0: yield n n=n-1 print(gen(10)) ### μΆλ ₯κ²°κ³Ό ### <generator object gen at 0x000001CED6C637B0> ### => generator κ°μ²΄ λ°ν print(list(gen(10))) ### μΆλ ₯κ²°κ³Ό ### [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
def gen(nums): for num in nums: yield num * num nums = [i for i in range (6, 11)] res = gen(nums) for num in res: print(num) ### μΆλ ₯κ²°κ³Ό ### 36 ### 49 ### 64 ### 81 ### 100