개발공부/SK Networks Family AI bootcamp 강의노트

5일차 [파이썬기초 (함수)]

HyunJung_Jo 2025. 1. 13. 17:10

1. 함수

(점프투파이썬)


1-1. 입출력 유무에 따른 함수의 경우의 수 

 

1-2. 전역변수, 지역변수

1-3. 가변함수 (키워드 가변 파라미터)

*args는 Python 함수에서 가변 인자를 받을 때 사용하는 문법입니다. 함수에 전달되는 인자의 개수가 정해져 있지 않을 때 유용하게 사용할 수 있습니다. *args는 튜플 형태로 전달된 모든 위치 인자를 함수 내에서 사용할 수 있게 합니다.

*args는 튜플, **args 는 dict로 입력

def add(a,b,c):
    a *= 2
    b *= 3
    c *= 4
    return a+b+c

a1= 10
b1 = 5
c2 = 7

dic = {
    # 키: 파라미터명, 밸류: 전달할 데이터
    'a':10,'b':5,'c':7
}
add(b=b1,a=a1,c=c2)
add(**dic) # 키워드 가변 파라미터터
def add_numbers(*args):
    return sum(args)

print(add_numbers(1, 2, 3))  # 출력: 6
print(add_numbers(10, 20))   # 출력: 30
print(add_numbers(5))        # 출력: 5
user={
    'name':'Jenny',
    'age':25,
    'address':'서울'
}

def print_user_info(answer, **user): # **args
    print(f'{user['name']}는 {answer}라고 말했어요')

print_user_info('코딩좋아',**user)

1-4. 람다 함수

일회용 함수

# 함수명(변수) = lambda input : logic (return defalult value)
# 함수도 변수이고, 데이터이다!
lambda_add = lambda a,b : a+b
lambda_add(1,2)

 

1-5. Closure (내부 함수)

  • 내부에 있는 함수를 외부로 리턴하는 것
  • 외부에서 조작 못함 (해킹방지)

1-6. Call back (콜백함수)

  • 외부에 있는 함수를 내부로 전달

1-7. Decorate

# 실행시간 알아볼 때 데코레이터 많이 쓴다.

import time 

def time_func(param_func):
  def wrapper(*args):
    start = time.time()
    lst = []
    for i in args:
      try:
        lst.append(int(i))
      except:
        pass 
    param_func(*lst)
    end = time.time()
    print("함수 수행시간은: %f 초" % (end - start))

  return wrapper 


@time_func
def add(*args):
    print(sum(args))

add(1,2,3,'a','b')

[ 실행 순서 ]
1. 데코레이터 적용: @time_func가 add 함수에 적용됩니다. 이제 add 함수는 wrapper 함수로 대체됩니다.
2. 함수 호출: add(1, 2, 3)을 호출하면 실제로는 wrapper(1, 2, 3)가 호출됩니다.
3. 시작 시간 기록: wrapper 함수가 시작 시간을 기록합니다.
4. 인자 변환: 전달된 인자들을 정수로 변환하여 리스트 lst에 추가합니다.
5. 원래 함수 호출: 변환된 인자들을 사용하여 원래의 add 함수를 호출합니다. 여기서 add 함수는 인자들의 합계를 출력합니다.
6. 종료 시간 기록: wrapper 함수가 종료 시간을 기록합니다.
7. 수행 시간 출력: 함수의 수행 시간을 계산하여 출력합니다.