1. 사용자 정의 함수
사용자 정의 함수란 사용자가 특정 작업을 수행하기 위해 직접 작성한 함수를 의미합니다. 파이썬에는 많은 내장 함수들이 있지만, 때로는 우리의 요구사항에 맞게 동작하는 함수를 직접 만들어야 할 때가 있습니다. 이때 사용자 정의 함수를 작성하게 됩니다. 기본적인 구조는 아래와 같습니다.
def 함수명(매개변수1, 매개변수2, ...):
함수가 실행될 때 실행할 문장
return 결과값
1-1. 매개변수와 반환값이 없는 함수
def func1():
print('처음으로 만드는 함수!')
func1()
func1()
func1()
결과:
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
파이썬 에서는 함수 자체도 객체로 보기때문에 메모리에 저장되고 이름을 부르면 실행이 된다.
for i in range(5):
func1()
결과:
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
1-2. 매개변수가 있고 반환 값이 없는 함수
def func2(num):
print(f'입력받은 숫자: {num}')
func2(100)
func2(4)
결과:
입력받은 숫자: 100
입력받은 숫자: 4
def func3(start, end):
sum = 0
for i in range(start, end+1):
sum += i
print(f'{start}부터 {end}까지의 합: {sum}')
func3(1,10)
func3(1,100)
1부터 10까지의 합: 55
1부터 100까지의 합: 5050
1-3. 반환값이 있는 함수
def func4():
print('안녕하세요 파이썬!')
func4()
# temp = func4() None가 나온다
temp = func4
print(f'temp에 저장된 값: {temp}')
결과:
안녕하세요 파이썬!
temp에 저장된 값: <function func4 at 0x7c99cd134550>
함수를 실행을 하고 변수에 저장을하면 리턴값만 을 저장하고, 함수 자체를 저장하고 싶으면 함수이름만 저장해 줘야한다.
def func5():
return '🎁'
temp = func5()
print(f'temp에 저장된 값: {temp}')
temp에 저장된 값: 🎁
def func5():
return '🎁'
def func5():
print('🎁')
리턴값을 있는 함수를 사용하면 범용성 있게 사용할수 있다.
리턴값 없이 사용하면 안에 값을 찍는 용도로만 사용할수 있기때문에 범용성이 없다.
def func6(num1, num2):
sum = num1 + num2
return sum
print(func6(10, 5))
temp = func6(10, 5)
print(temp)
# temp = func6(10)
# print(num1,num2)
결과:
15
15
매개변수는 함수에만 쓰이는 변수이기 때문에 함수 밖에서는 출력을 할수 없다.
1-4. 기본값이 설정된 매개변수
def func6(num1, num2):
sum = num1 + num2
return sum
print(func6(10, 3))
# print(func6(10)) # 값을 다 채우지 않았기 때문에 에러 발생.
결과:
13
def func6(num1=1, num2=1):
sum = num1 + num2
return sum
매개변수에 기본값을 설정할수 있다.
print(func6())
print(func6(10))
print(func6(10, 3))
print(func6(num2=10))
결과:
2
11
13
11
매개변수 이름에 값을 넣어주면 해당 매개변수에만 값을 넣을수 있다.
1-5. 가변 매개변수
함수를 호출할 때 *를 사용하면 시퀀스(리스트, 튜플 등)의 요소를 개별적인 위치 인자로 풀어서 전달할 수 있습니다.
def func7(*args):
print(args)
result = 0
return result
print(func7())
print(func7(10,30))
print(func7(10, 30, 70, 90, 100))
결과:
()
0
(10, 30)
0
(10, 30, 70, 90, 100)
0
요소를 한번에 받아 튜플화를 시킨다.
1-6. 키워드 매개변수
def func8(id, name, age):
print(f'아이디: {id}')
print(f'이름: {name}')
print(f'나이: {age}')
func8('apple', '김사과', 20)
결과:
아이디: apple
이름: 김사과
나이: 20
1-7. 여러개의 반환값
def func10(num1, num2):
return num1 + num2
result1 = func10(10, 3)
print(result1)
결과:
13
def func10(num1, num2):
return num1 + num2, num1 - num2, num1 * num2, num1 / num2
result1, result2, result3, result4 = func10(10,3)
print(f'덧셈: {result1}, 뺄셈: {result2}, 곱셈: {result3}, 나눗셈: {result4}')
결과:
덧셈: 13, 뺄셈: 7, 곱셈: 30, 나눗셈: 3.3333333333333335
리턴값 여러개를 순서대로 변수에 담아준다.
_, _, result3, _ = func10(10,3)
print(f'곱셈: {result3}')
결과:
곱셈: 30
언더바(_)를 사용하면 해당 리턴값을 변수에 담지 않는다.
li1 = [10, 20, 30, 40, 50]
for _,V in enumerate(li1):
print(f'값:{V}')
결과:
값:10
값:20
값:30
값:40
값:50
이런식으로 사용하여 인덱스는 빼고 값만 받아올수 있다.
계산기 만들기
# 일단 기본적인 계산식을 만들어준다.
def add(x, y):
return x + y
def sub(x, y):
return x - y
def mul(x, y):
return x * y
def div(x, y):
return x / y
def user_input():
num1 = float(input())
oper = input()
num2 = float(input()) # 소수도 받을수 있게 float 타입으로 인풋을 받아준다.
return num1, oper, num2
def cal(num1, oper, num2):
if oper == '+':
return add(num1, num2)
elif oper == '-':
return sub(num1, num2)
elif oper == '*':
return mul(num1, num2)
elif oper == '/':
return div(num1, num2)
else:
return "입력을 확인하세요."
# 숫자와 연산자를 입력받았을때,
# 입력받은 연산자에 해당하는 계산식을 찾고,
# 입력받은 값을 함수에 넣어준다.
def main():
num1,oper,num2 = user_input()
result = cal(num1, oper, num2)
print(f'= {result}')
# 사용자 입력을 받고 계산을해서 결과를 보여준다.
main()
10
*
5
= 50.0
결과가 잘 나오는걸 확인 할 수 있엇다.
사용자 정의 함수를 이용하여 계산기를 만들어 보았다.
'코딩 > 파이썬' 카테고리의 다른 글
파이썬 - 콜백함수와 람다함수 (1) | 2024.03.18 |
---|---|
파이썬 - 변수의 범위 (0) | 2024.03.18 |
컬렉션과 반복문 (2) | 2024.03.15 |
파이썬 제어문 - 반복문 (2) | 2024.03.15 |
파이썬 제어문 - 조건문 (0) | 2024.03.14 |