newhaneul

[Advanced Python Programming] Lecture 5. Function 본문

4. University Study/Advanced Python Programming

[Advanced Python Programming] Lecture 5. Function

뉴하늘 2026. 4. 12. 21:52
728x90

포스팅은 인하대학교 허혜선 교수님의 [202601-EEC3408-001] 고급파이썬프로그래밍을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.

 

  • 함수에서 값을 여러 개 반환할 때는 return에 값이나 변수를 ,(콤마)로 구분해서 지정하면 됨 $\rightarrow$ 파이썬만 가능
  • 여러 개 값을 변수 한 개에 저장해서 출력해보면 tuple이 반환됨
def 함수이름(매개변수):
    return 반환값1, 반환값2
def add_sub(a, b):
    return a+b, a-b

x = add_sub(10, 20)
x

(30, -10)

 

  • 함수 호출 스택 과정
    • 함수는 스택(stack) 방식으로 호출됨
    • 함수를 호출하면 스택의 아래쪽 방향으로 함수가 추가되고 함수가 끝나면 위쪽 방향으로 사라짐
    • 프레임은 스택 안에 있어서 각 프레임을 스택 프레임이라고 부름
    • 전역 프레임은 스크립트 파일의 실행이 끝나면 사라짐

 

  • unpacking
x = [10, 20, 30]
print(x)
print(*x)

[10, 20, 30]
10 20 30
def 함수이름(*매개변수):
    코드
def print_numbers(*args):
    for arg in args:
        print(arg)

print_numbers(10, 20, 30, 40)

 

  • 키워드 인수 (keyword argument)
def personal_info(name, age, address):
    print(name)
    print(age)
    print(address)

personal_info(name='홍길동', age=30, address='인천광역시')
personal_info(address='인천광역시', name='홍길동', age=30)

홍길동
30
인천광역시
홍길동
30
인천광역시

 

  • dictionary unpacking
    • 딕셔너리의 키는 반드시 문자열 형태야 함
    • 딕셔너리 언패킹을 사용할 때는 함수의 매개변수 이름과 딕셔너리의 키 이름이 같아야 함
def 함수이름(**매개변수):
    코드
def personal_info(name, age, address):
    print(name)
    print(age)
    print(address)

x = {'name': '홍길동', 'age': 30, 'address': '인천광역시'}
personal_info(**x)

홍길동
30
인천광역시
def personal_info(name, age, address):
    print(name)
    print(age)
    print(address)

personal_info(**{'name': '홍길동', 'address': '인천광역시', 'age': 30})

홍길동
30
인천광역시

 

  • 딕셔너리는 *을 한 번만 사용하면 키를 사용한다는 뜻이고, **처럼 딕셔너리를 두 번 언패킹하여 값을 사용하도록 만들어야 한다.
def personal_info(name, age, address):
    print(name)
    print(age)
    print(address)

personal_info(*{'name': '홍길동', 'address': '인천광역시', 'age': 30})

name
address
age

 

  • 키워드 인수를 사용하는 가변 인수 함수는 매개변수 앞에 **를 붙여서 만든다. 관례적으로 keyword arguments를 줄여서 kwarg로 사용한다.
def personal_info(**kwargs):
    for kw, arg in kwargs.items():
        print(kw, ':', arg, sep = ' ')
def personal_info(**kwargs):
    if 'name' in kwargs:
        print(kwargs['name'])
    if 'age' in kwargs:
        print(kwargs['age'])
    if 'address' in kwargs:
        print(kwargs['address'])

x = {'name': '홍길동', 'address': '인천광역시', 'age': 30}
personal_info(**x)

홍길동
30
인천광역시

 

  • 매개변수에 초기값 지정하기
    • 초깃값이 지정된 매개변수 다음에는 초깃값이 없는 매개변수가 올 수 없음을 주의해야한다.
    • 초깃값이 지정된 매개변수는 뒤쪽에 몰아줘야함
def personal_info(name, address = '비공개', age):
    pass
    
  Cell In[84], line 1
    def personal_info(name, address = '비공개', age):
                                             ^
SyntaxError: non-default argument follows default argument
def personal_info(name, age, address = '비공개'):
    pass
728x90