[Python] 기초 - 함수(기초)

ITmakesmeSoft·2022년 9월 3일
0

PYTHON [BASIC]

목록 보기
6/13
post-thumbnail

함수의 정의

  • 특정한 기능을 한느 코드의 조각(묶음).
    특정 코드를 매번 다시 작성하지 않고, 필요시에만 호출하여 간편히 사용

함수의 종류

  • 내장함수 : 파이썬에 기본적으로 포함된 함수
  • 외장함수 : import문을 통해 사용하며, 외부 라이브러리에서 제공하는 함수
  • 사용자 정의 함수 : 사용자가 직접 만드는 함수

선언과 호출

# 함수를 선언할 땐 def을 붙이고 함수명을 적어야 함. (define)
# 함수에는 parameter가 필요.

def function_name(parameter):
		returning_value=True
		return returning_value

function_name(argument) # 함수 호출

함수의 입력

  • Parameter : 함수를 정의할 때, 함수 내부에서 사용되는 변수
  • Argument : 함수를 호출할 때 넣어주는 값
    • Positonal Argument : Argument 위치에 맞게 순서대로 전달하는 것.
    • Keyword Argument : 직접 변수의 이름으로 특정 Argument를 전달 가능
    • Default Argument Values : argument의 디폴트값을 설정 가능
    • Asterisk(*) : 가변인자/ 가변 키워드 인자를 설정 가능
      • Asterisk와 가변인자 / 가변 키워드 인자
        • 가변인자(args)
          • 는 시퀸스 언패킹 연산자라고도 불리며, 시퀸스를 풀어 헤치는 연산자

          • 주로 튜플이나 리스트를 언패킹하는데 사용

          • parameter 앞에 * 를 붙여 가변인자를 만들 수 있음

          • 가변인자는 Optional이기 때문에, 값이 들어가지 않아도 됨.

            def func(*args):
                print(args)
                print(type(args))
            
            func(1,2,3,'a','b')
            # (1,2,3,'a','b')
            # <class 'tuple'>
            
            # 가변인자는 값이 들어가지 않아도 상관 없음.
            def family(mother, father, *pets): # *pets은 옵션
            		print(mother)
            		print(father)
            		print(pets)
            
            family('엄마', '아빠')
            # 엄마
            # 아빠
            
        • 가변 키워드 인자(kwargs)
          • 몇 개의 키워드 인자를 받을지 모르는 함수를 정의할 때 유용

          • *kwargs는 딕셔너리로 묶여 처리되며, parameter 앞에 **를 붙여 표현

            # 가변 키워드 인자 사용법
            def family(**kwargs):
            		for key, value in kwrgs.items():
            				print(key, ':', value)
            family(father='아버지',mother='엄마',baby='아기')
            # 변수를 선언하듯, 따옴표를 붙이지 말아야 함.
            
            # 가변 키워드 인자 활용
            def family(mother, father, **pets):
                print(father, mother)
            		if pets:        # pets이 있으면 작업
            				for species, name in kwrgs.items():
            						print(species, ':', name)
            family('아버지', '엄마', dog='개', cat='고양이')
            

# 1. Positional Argument
def function(a, b): # a, b는 Parameter
    return a+b

c, d = 5, 5
function(c, d)  # c, d는 Argument

# 2. Keyword Argument
function(c=5, d=5)
function(c, d=5)
function(c=5, d) # <= 오류 발생
# keyword argument를 사용하는 순간 그 이후의 아규먼트는 모두 키워드를 사용해야 함

# 3. Default argument values:
def function_default_value(x, y=0):
		return x+y
function_default_value(3)

패킹/언패킹

  • 패킹 : 여러 개의 데이터를 묶어서 변수에 할당하는 것
  • 언패킹 : 시퀀스 속의 요소들을 여러개의 변수에 나누어 할당하는 것.
# 패킹
numbers=(1,2,3,4,5)
print(numbers) # (1,2,3,4,5)

# 언패킹
a,b,c,d,e=numbers
print(a,b,c,d,e) # 1,2,3,4,5
📢 **단, 언패킹시 변수의 개수와 할당하고자 하는 요소의 갯수가 동일해야 함.**
# 언패킹시 변수의 개수와 할당하고자 하는 요소가 다르면 오류가 발생
numbers=(1,2,3,4,5)
a,b,c,d,e,f = numbers # ValueError: not eough values to unpack

# Asterisk를 이용한 가변인자 활용 (함수의 입력에서 자세히 다룸)
a,b,*rest = numbers
print(a,b,rest) # 1 2 (3,4,5)

c,*args,d = numbers
print(c,args,d) # 1 (2,3,4) 5

함수의 출력

  • Void Function
    • 명시적인 return 값이 없는 경우, None을 반환하고 종료
  • Value returning function
    • 함수 실행 후, return문을 통해 값 반환
    • return을 하게 되면, 값 반환 후 함수가 바로 종료
  • print함수와 return의 차이
    • print를 사용하면 호출될 때마다 값이 출력됨
    • 데이터 처리를 위해서는 return을 사용해야 함.
profile
💎 Daniel LEE | SSAFY 8th

0개의 댓글