본문 바로가기

Python 기초

파이썬 기초(11)-사용자 정의함수

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1.사용자 정의함수

사용자 정의 함수는 사용자(개발자)가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야 할 때가 있습니다. 이때 사용자 정의 함수를 작성하게 됩니다. def문을 이용하여 함수를 만듭니다. 기본구조는 아래와 같습니다.

def 함수명(매개변수1, 매개변수2, ...):
	함수가 실행될 때 실행할 코드
    return 결과값

1-1. 매개변수와 반환값이 없는 함수

매개변수가 없고, 리턴값을 지정하지 않았기 때문에 print() 함수로 출력할 경우 리턴값이 None상태로 출력됩니다.

#매개변수,반환값이 없는 함수
def a():
    print('매개변수,반환값이 없는 함수')
print(a()) #반환값이 없으므로 문자열과 None 출력

1-2. 매개변수가 있고 반환 값이 없는 함수

def문의 함수에 매개변수를 설정하고, 리턴값은 설정하지 않습니다. 마찬가지로 리턴값은 None상태입니다. 매개변수를 설정했기 때문에 매개변수만 입력가능합니다. 매개변수는 항상 함수 ()소괄호 안에 들어있다는 것을 인지해야합니다.

#매개변수만 설정, 반환값X
def a(b):
    print(f'출력된 값:{b}')
a(5)
a(3251)
print(a(3))

def문+for문 활용

#매개변수 + for문 활용
def a1(b,c):
    asterisk=1
    for i in range(b,c): # in범위 b~c까지
        asterisk*=i #asterisk=asterisk*i
    print(f'{b}부터 {c}까지의 곱셈: {asterisk}')
a1(1,5)
a1(3,7)

1-3. 반환값이 있는 함수

Return문은 반환값을 설정합니다. 반환값을 설정하여 None이 아닌 값을 출력합니다.

#반환값 있는 함수
def a2():
    return '32' # 반환값 32설정
#a2함수 변수 설정
a21=a2()
print(f'a21에 저장된 값:{a21}')

여기서 a21=a2()는 함수를 변수안에 넣음으로써 반환값의 메모리값이 들어있음

실제로 사용자 정의함수에서 반환값이 있는 함수가 없는 함수보다 활용도가 더 높기에, 반환값을 설정한 함수를 많이 사용합니다.

#반환값이 있는 함수와 없는 함수의 차이
def a3():
    return '반환값이 존재' #함수(x)=y에서 y가 있음
def a4():
    print('반환값이 존재하지 않는 None') #함수(x)=y에서 y가 없음
print(a3())
print(a4())

1-4. 기본값이 설정된 매개변수

매개변수의 기본값을 지정함으로써, 함수의 매개변수를 입력할 때, 입력하지 않아도 지정한 기본값을 출력하게끔 만듭니다.

#매개변수의 기본값 지정
def a5(b=1,c=1,d=1):
    asterisk=b*c*d #실행코드와 변수 설정
    return asterisk
print(a5(3,5,3))
print(a5())

기본값을 1로 지정, 지정함수의 매개변수에 아무것도 입력하지 않아도 1이 나온다.

1-5. 가변 매개변수

함수를 호출할 때 *(Asterisk)를 사용하면 시퀀스(리스트, 튜플 등)의 요소를 개별적인 위치 인자로 풀어서 전달할 수 있습니다. 매개변수의 요소 형식이 고정되지 않고, 가변적(variable)이기 때문에, 자료의 출력값이 다양합니다.

#가변 매개변수
def a6(*ass): #def문, 매개변수에 *
    print(ass) 
    sir=0 #기본값 0으로 설정
    return sir #리턴값 설정
print(a6(10,30,20,50,70,90,110)) # 튜플형 출력
print(a6([30,20,10])) #리스트형 출력

1-6. 키워드 매개변수

f-string을 이용해, 키와 value값이 1:1 대응되게 출력합니다. 매개변수의 순서를 바꾸어도 파라미터 지정을 했기 때문에 매개변수 입력순서는 상관없습니다. 또한, *(asterisk)를 통해 전달가능합니다.

#키워드 매개변수
def a7(a,b,c):
    print(f'년도: {a}')
    print(f'월: {b}')
    print(f'날짜: {c}')
print(a7(2024,3,15))
#매개변수 입력순서 바뀌어도 출력가능
a7(c=17,a=1993,b=8)

*(asterisk)활용

#*활용
dic={'c':25,'a':1345,'b':6}
print(a7(**dic))

a7(**dic)에 리턴값이 없기에 None 출력

1-7. 여러개의 반환값

함수 1개의 1번 실행에 여러 개의 결과값을 출력할 수 있습니다. 1개의 함수에 여러 변수를 연결하여 사용했을 시, 변수에 _(언더바)를 사용하여 변수를 누락하여 사용할 수 있습니다.

#1개 함수에 여러 변수 선언
def a8(no1,no2):
    return no1+no2, no1-no2, no1*no2, no1/no2 # 리턴값 4개 지정
# 리턴값 4개->변수4개 지정
a,b,c,d=a8(12,4)
print(f'더하기:{a}, 빼기:{b}, 곱하기:{c}, 나누기:{d}')

_처리 예시

#_사용
_,b,_,d=a8(4,16)
print(f'빼기:{b},나누기:{d}')

'Python 기초' 카테고리의 다른 글

파이썬 예제-3. 반복문  (0) 2024.03.17
파이썬 기초(10)- 컬렉션과 반복문  (0) 2024.03.15
파이썬 예제-2. 조건문 문제  (1) 2024.03.15
파이썬 기초(9) - 반복문  (0) 2024.03.14
파이썬 기초(8)-조건문  (0) 2024.03.14