728x90
반응형
SMALL
1. 함수란❓
- 변수 x, y에 대해 x값이 정해지면 그에 따라 y값이 결정되는 것
- 반복적으로 사용되는 가치 있는 부분을 묶어서 하나의 집합으로 만듦
- 코드를 재활용하기 위한 목적
- 파이썬에서의 함수 만들기: def 키워드 사용
1-1. 이름만 있는 함수
- 함수 정의
def 함수명():
함수가 호출되면 실행할 문장
...
- 함수 호출
함수명()
- 사용자 정의 함수를 만들어보자.
def func1():
print('처음으로 만든 함수에 의해 출력됩니다')
func()
>>> 처음으로 만든 함수에 의해 출력됩니다
func()
>>> 처음으로 만든 함수에 의해 출력됩니다
func()
>>> 처음으로 만든 함수에 의해 출력됩니다 # 호출할 때 마다 반복적으로 사용 가능
# for문을 이용하여 함수 사용하기
for i in range(5):
func1()
>>> 처음으로 만든 함수에 의해 출력됩니다
처음으로 만든 함수에 의해 출력됩니다
처음으로 만든 함수에 의해 출력됩니다
처음으로 만든 함수에 의해 출력됩니다
처음으로 만든 함수에 의해 출력됩니다
1-2. 매개변수가 있는 함수
- 함수 정의
def 함수명(변수1, 변수2, ...):
함수가 호출되면 실행할 문장
- 함수 호출
함수명(값1, 값2, ...) # 변수에 들어갈 값 입력
- 매개변수가 있는 함수를 만든 후 호출해보자.
# 숫자를 입력받아 출력해주는 함수 만들기
def func2(num):
print(f'입력받은 숫자: {num}')
func2(10)
>>> 입력받은 숫자: 10
func2(4)
>>> 입력받은 숫자: 4
# 문자열이 들어가도 출력됨
func2('s')
>>> 입력받은 숫자: s
# 처음 숫자와 끝 숫자를 입력받아 두 수 사이의 총합을 구하는 함수 만들기
def func3(start, end):
sum = 0
for i in range(start, end+1):
sum += i
print(f'{start}부터 {end}까지의 총 합: {sum}')
func3(1,10)
>>> 1부터 10까지의 총 합: 55
func3(100, 500)
>>> 100부터 500까지의 총 합: 120300
1-3. 리턴값이 있는 함수
- 함수 정의
def 함수명(변수1, 변수2, ...)
함수가 호출되면 실행할 문장
...
return 값
- 함수 호출
변수 = 함수명(값1, 값2, ...) # 변수에 return값이 저장
- return값이 없고 print로 값을 출력하는 함수와 비교해보기
def func4():
print('안녕하세요 파이썬!')
a = func4()
print('a에 저장된 값:{}'.format(a))
>>> 안녕하세요 파이썬!
a에 저장된 값:None # func4가 리턴하는 값이 없기 때문에 변수a에 저장된 값이 없음
def func5():
return '🍣'
# return 값을 변수에 저장하기
susi = func5()
print('susi에 저장된 값:{}'.format(susi))
>>> susi에 저장된 값:🍣
def func6(num1, num2):
sum = num1 + num2
return sum
result = func6(10)
print(result)
>>> TypeError: func6() missing 1 required positional argument: 'num2'
# 매개변수를 2개 입력받게 함수를 만들었기 때문
result = func6(10, 20)
print(result)
>>> 30
- num1과 num2 변수의 범위
- 함수안에서 정의된 변수는 지역함수(local)
- 지역함수(local) : 함수의 바깥에서 사용할 수 없음
print(num1)
>>> NameError: name 'num1' is not defined
print(num2)
>>> NameError: name 'num2' is not defined
print(sum)
>>> <built-in function sum>
- return 값이 있는 함수는 코드를 재활용할 수 있도록 유연하게 작성할 수 있음
# 예시
# 1번) print로 값을 출력하는 함수
def test1():
print('안녕하세요')
# 2번) 값을 return 하는 함수
def test2():
return '안녕하세요'
# 동일한 결과를 출력
print(test1())
>>> 안녕하세요
print(test2())
>>> 안녕하세요
# test1의 경우는 픽스된 값만 출력하는 코드기 때문에 응용하여 사용하기 어려움.
str1 = test2()
print(str1, '파이썬')
>>> 안녕하세요 파이썬
1-4. 디폴트 매개변수가 있는 함수
- 함수가 호출될 때 값을 넣지 않아도 함수 정의 시 변수의 값을 지정하여 호출될 때 기본값으로 나오게 됨
- 함수 정의
def 함수명(변수1=값1, 변수2=값2, ...):
함수가 호출되면 실행할 문장
...
return 값
- 함수 호출
변수 = 함수명(값1, 값2, ...)
변수 = 함수명()
- 매개변수를 기본값으로 설정하지 않은 함수와 비교해보기
# 매개변수의 기본값을 설정하지 않은 함수
def func6(num1, num2):
sum = num1 + num2
return sum
print(func6()) # 매개변수를 설정해야 함
>>> TypeError: func6() missing 2 required positional arguments: 'num1' and 'num2'
def func6(num1=5, num2=2):
sum = num1 + num2
return sum
# 매개변수를 입력하지 않았을 때 기본값으로 함수에 입력됨
result = func6()
print(result)
>> 7
# 매개변수를 다른 값으로 주어지면 기본값이 아닌 주어진값으로 계산됨
result = func6(10,20)
print(result)
>>> 30
- 매개변수를 하나만 입력하고 함수를 호출해보자.
# 첫번째 매개변수의 디폴트값과 입력한 매개변수가 계산됨
func6(2)
>>> 4
- 매개변수를 여러개 입력받을 때 디폴트값을 첫번째 매개변수에만 지정하여 함수를 만들 수 없음.
def func_test(num1=5, num2):
sum = num1 + num2
return sum
>>> SyntaxError: non-default argument follows default argument
def func_test1(num1, num2=5):
sum = num1 + num2
return sum
func_test1(10,20)
>>> 30
1-5. 매개변수의 개수가 가변적인 함수
- 함수 호출 시 매개변수의 수가 변동될 때 사용
- 가변적인 매개변수를 전달할 경우 함수 안에서 튜플 형태로 사용
- 함수 정의
def 함수명(*변수):
함수가 호출되면 실행할 문장
....
return 값
- 함수 호출
변수 = 함수명(값1, 값2, ... ) # 호출
변수 = 함수명(값1) # 호출
변수 = 함수명()
- 변수로 주어진 값을 모두 더하는 함수를 만들어보자.
def func7(*args): # args: 한꺼번에 매개변수들을 받는 경우 관례적으로 쓰는 변수명
result = 0
# print(args)
for i in args: # args: iterable한 튜플
result += i
return result
print(func7()) # 매개변수를 주지 않을 때
>>> 0
print(func7(10, 30, 20, 60)) # 매개변수가 여러개
>>> 120
print(func7(10)) # 매개변수를 하나만 줄 때
>>> 10
1-6. 매개변수를 딕셔너리 구조로 전달받는 함수
- 매개변수명과 딕셔너리의 key가 같아야하고, 입력하는 순서도 같아야함
- 딕셔너리의 key는 반드시 문자열 형태
- 함수 정의
def 함수명(**변수):
함수가 호출되면 실행할 문장
...
return 값
- 함수 호출
변수1 = 함수명(변수값1, 변수값2, ...)
def func8(id, name, age):
print(f'아이디: {id}')
print(f'이름: {name}')
print(f'나이: {age}')
dic1 = {'id':'apple', 'name':'김사과', 'age':20}
# 딕셔너리 구조로 함수에 넣어줄 때
func8(**dic1)
>>>
아이디: apple
이름: 김사과
나이: 20
func8(*dic1)
>>>
아이디: id
이름: name
나이: age # *의 데이터를 보낼경우 key가 저장됨
def func9(**args):
# print(args) # {'id': 'apple', 'name': '김사과', 'age': 20}
for i in args:
print(i) # i는 key값
if i == 'id':
id = args[i]
return id # dict에서 id의 value값을 return
# 매개변수에 값을 주면(딕셔너리구조로 만들어줌)
user = func9(id = 'apple', name='김사과', age=20)
print(user)
>>> apple
1-7. 리턴값이 여러개인 함수
- 함수 정의
def 함수명(변수1, 변수2, ...)
함수가 호출되면 실행할 문장
return 값1, 값2 ...
- 함수 호출
변수1, 변수2, ... = 함수명(값1, 값2, ...)
- 두 숫자를 매개변수로 받아 두 수의 덧셈, 뺄셈, 곱셈, 나눗셈을 하여 값을 저장하는 함수를 만들어보자.
def func10(num1, num2):
return num1 + num2, num1 - num2, num1 * num2, num1 / num2
result1, result2, result3, result4 = func10(10, 3)
print('덧셈: {}, 뺄셈: {}, 곱셉: {}, 나눗셈: {}'.format(result1, result2, result3, result4))
>>> 덧셈: 13, 뺄셈: 7, 곱셉: 30, 나눗셈: 3.3333333333333335
- 여러개의 return값 중 사용하고자 하는 값만 변수에 담고 싶을 땐 _를 이용한다.
def func10(num1, num2):
return num1 + num2, num1 - num2, num1 * num2, num1 / num2
_, _, result3, _ = func10(10, 3)
print(result3)
>>> 30
1-8. 함수의 작성을 나중에 하고 싶을 때
def func11():
pass
728x90
반응형
LIST
'Python > Basic' 카테고리의 다른 글
[파이썬, Python] 변수의 범위 - 스코프(Scope), 지역변수(local 변수), 전역변수(global 변수), global 키워드 (0) | 2023.03.09 |
---|---|
[파이썬, Python] 함수 - 2️⃣ 콜백 함수(Callback Function) (0) | 2023.03.09 |
[파이썬, Python] 자료구조(Data Structure) - 4️⃣ 세트(set) (0) | 2023.03.08 |
[파이썬, Python] 자료구조(Data Structure) - 3️⃣ 딕셔너리(Dictionary, dict) (0) | 2023.03.08 |
[파이썬, Python] 제어문 - 2️⃣ 반복문(2)_다중반복문, 컴프리헨션(Comprehension) (0) | 2023.03.08 |