*강의 자료에 오류가 발견되어 수정했습니다. 4/8 15:13 이전에 다운로드 받으신 분들은 재다운로드 부탁드립니다.
3차시 강의 주제는 함수와 문자열입니다.
[Chapter 01] 함수
함수의 개념
- 수학 속 함수
- 특정 수식에 x 값을 대입하면 y 값이 정해지는 것
- y=f(x) 표현함.
- 파이썬 속 함수
- 함수(function) = 코드의 집합
- 특정 기능을 하는 코드를 묶어 놓은 것
- 함수의 종류
- 내장 함수: 파이썬에서 기본으로 제공하는 함수, 파이썬 설치 후 사용 가능
- -print(), len() 등
- 사용자 함수: 사용자가 필요할 때 직접 만들어 사용
함수의 필요성
- 코드 재 사용 가능→불필요한 코드 중복 줄일 수 있음
- 가독성 향상
- 유지 보수 용이→코드 수정 사항 발생 시 함수만 수정
함수의 구성 요소
- def 키워드: definition의 약자로 함수를 정의할 때 사용함.
- return 키워드: 함수를 실행했던 위치로 돌아가게 함
- 함수 이름: 함수의 기능 유추할 수 있는 이름으로 설정
- 매개변수(parameter): 함수에 전달된 데이터를 받아 저장하는 변수
- 반환값(return value): 함수의 기능을 수행한 뒤 결과값
def 함수 이름(매개변수): #실행문의 시작을 나타내는 ‘:’
함수의 기능을 수행할 코드1 #실행문 들여쓰기
함수의 기능을 수행할 코드2
…
return 반환값
- 매개변수는 ‘인수’라고도 하며, 매개변수가 있는 함수도 있고, 없는 함수도 있음.
- 반환값이 있는 함수도 있고, 없는 함수도 있음.
- 반환값과 마찬가지로 return 키워드도 반드시 사용해야 하는 것은 아니며, 호출부로 돌려줘야 하는 데이터가 있는 경우에만 사용
→ 각 요소가 있는 함수, 없는 함수의 차이는 뒤에서 더 자세히!
함수명 지을 때 유의 사항
- 내장 함수명과 동일하면 안됨.
- 첫 글자는 숫자 사용 불가
- 특수 문자는 언더바(_)만 사용 가능
- 첫 글자는 소문자 사용 권장
함수 선언 및 호출하기
plus() 함수 만들고 호출하기
#함수 선언 부분 (실행되지 않는다)
def plus(v1, v2): #v1, v2는 매개변수
result = v1 + v2
return result #반환
#메인 코드 부분
hap = plus(100, 200)
print("100과 200의 plus() 함수 결과는", hap) #plus() 함수에서 반환된 값 출력
💡 100과 200의 plus() 함수 결과는 300
함수 요소 유무 차이
- 함수 중에는 매개변수나 반환값이 없는 함수도 있음.
def a_rectangle_area(): #매개변수 x, 반환값 x
print(5 * 7)
def b_rectangle_area(x, y): #매개변수 O, 반환값 x
print(x * y)
def c_rectangle_area(): #매개변수 x, 반환값 O
return(5 * 7)
def d_rectangle_area(x, y): #매개변수 O, 반환값 O
return(x * y)
a_rectangle_area()
b_rectangle_area(5, 7)
print(c_rectangle_area())
print(d_rectangle_area(5, 7))
💡 35
35
35
35
리턴
- 반환값(return value): 함수의 결과
- 자료 없이 리턴하기
def return_test():
print("A 위치입니다.")
return #리턴
print("B 위치입니다.")
return_test() #함수 호출
💡 A 위치입니다.
- 자료와 함께 리턴하기
def return_test():
return 100 #자료 가지고 리턴
value = return_test()
print(value)
💡 100
- 리턴할 값이 없으면 함수는 ‘None’을 반환한다. ‘없다’ 라는 의미이다.
변수의 종류
- 변수가 코드에서 사용되는 범위에 따라 두 종류로 나눌 수 있다.
- 지역 변수(local variable): 함수 내에서 선언. 함수 안에서만 사용 가능
- 전역 변수(global variable): 함수 외에서 선언. 프로그램 전체에서 사용 가능
num = 10 #전역변수 num 선언
#함수 정의
def fun1():
num = 20 #지역변수 num 선언
print('num: ', num) #지역변수 num 사용(함수 안에서 num을 먼저 찾는다.)
print('num: ', num) #전역변수 num 사용
fun1()
💡 num: 10 #전역변수 num 출력
num: 20 #지역변수 num 출력
- global 키워드: 전역변수에 접근함. 즉 ‘global num’은 전역변수 num을 뜻함.
num = 10
def fun1():
global num
num = 20
print('num: ', num)
print('num: ', num)
fun1()
print('num: ', num)
💡 num: 10
num: 20
num: 20
중첩(Nested) 함수
- 함수 안에 정의된 또 다른 함수
- 주의할 점: 내부에 정의되어 있는 중첩 함수는 자신을 포함하고 있는 함수 내부에서만 호출할 수 있으며, 외부에서는 호출할 수 없음.
def divFuntion(n1, n2): #외부 함수 정의
def divOperator(num1, num2): #중첩 함수 정의
return num1/num2
if n2 != 0:
result = divOperator(n1, n2)
elif n2 == 0:
result = '0으로 나눌 수 없습니다.'
return result
print(divFuntion(10, 0))
print(divFuntion(10, 2))
print(divOperator(10, 2)) #중첩 함수를 외부에서 호출
💡 0으로 나눌 수 없습니다.
5.0
Error
재귀(Recursive) 함수
- 함수 안에서 자신을 다시 호출하는 함수
- 재귀 함수는 자신 안에서 자기 자신을 계속 호출하므로 함수 호출을 종료할 수 있는 코드가 필수
def add(num):
if num > 0:
print('num: ', num)
add(num - 1) #자기 자신을 다시 호출
add(3)
💡 num: 3
num: 2
num: 1
매개변수의 개념
- 함수는 정의부(함수를 정의하는 쪽)와 호출부(함수를 사용하려고 호출하는 쪽)로 나뉜다.
- 인수: 함수를 호출할 때 넘겨주는 데이터(=매개값)
- 매개변수: 함수 호출부에서 넘긴 인수를 함수 정의부에서 받아 저장하는 변수
- 함수 호출부에서 전달한 인수가 두 개 이상일 시, 매개변수는 호출부에서 전달하는 인수의 개수와 순서에 맞춰서 선언
def plus(n1, n2): #n1, n2는 매개변수
result = n1 + n2
print(result)
plus(100, 200) #100, 200은 각각 n1, n2에 대응하는 인수
💡 300
파이썬에서 인수 사용 방법
- 키워드 인수: 매개변수의 변수명을 사용하여 함수의 인수를 지정하는 방법
def divide(n1, n2):
result = n1/n2
print(result)
divide(100, 200)
divide(200, 100)
divide(n2=200, n1=100)
💡 0.5
2.0
0.5
2. 디폴트 인수: 별도 인수가 입력되지 않을 때 미리 지정한 초깃값 사용하는 방법
- 단 디폴트 매개변수 뒤에는 일반 매개 변수가 올 수 없음
def divide(n1, n2 = 200):
result = n1/n2
print(result)
divide(100, 200)
divide(100)
💡 0.5
0.5
3. 가변 인수: 미리 지정한 변수 이외 추가로 인수를 원하는 만큼 입력할 수 있게 함
- ‘*’ 기호 이용함.
- 단 가변 매개변수 뒤에는 일반 매개변수가 올 수 없음
- 가변 매개변수는 하나만 사용할 수 있음
def plus(n1, n2, *num): #num이 가변 인수
result = n1 + n2 + sum(num) #sum() 함수: 리스트의 합을 구함
print(result)
plus(1, 2, 3, 4, 5)
💡 15
4. 키워드 가변 인수: 매개변수의 이름을 따로 지정하지 않고 입력하는 방법
def introduce(**name): #name이 키워드 가변 인수
print(name)
print("my name is {my_name}".format(**name))
print("your name is {your_name}".format(**name))
introduce(my_name = "Kim", your_name = "Lee")
💡 {'my_name': 'Kim', 'your_name': 'Lee'}
my name is Kim
your name is Lee
- 디폴트 매개변수가 가변 매개변수보다 앞에 올 때: 디폴트 매개변수의 의미가 사라짐
- 가변 매개변수가 디폴트 매개변수보다 앞에 올 때: 가변 매개변수가 우선됨
📚 내용이 많은 관계로 줄입니다. 나머지 내용은 첨부한 강의안 pdf 파일로 확인해주시길 바랍니다.
'스터디 > 파이썬 스터디 강의자료' 카테고리의 다른 글
6차시_파이썬 스터디 강의자료 (0) | 2024.08.05 |
---|---|
[4차시/노주원] 파이썬 스터디-'자료구조'와 '모듈과 패키지' (0) | 2024.05.13 |
[2차시/전서연] 파이썬 스터디 - 조건문과 반복 (0) | 2024.03.18 |
[1차시/공다원] 파이썬 스터디 - 파이썬 개요, 입출력과 리스트 (0) | 2024.03.09 |
[3팀/김경은] 10주차 파이썬 스터디 - 예외처리 (0) | 2023.06.02 |