Time for us to shine

[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 4주차 본문

혼공학습단/혼자 공부하는 파이썬 (개정판)

[혼공학습단 10기] 혼자 공부하는 파이썬 (개정판) 4주차

SH Park 2023. 7. 28. 16:15

▶4주차 미션 (7/24 ~ 7/30)

진도 : Chapter 05

기본 미션 : p.287 [직접 해보는 손코딩: 범위 내부의 정수를 모두 더하는 함수] 실행 후 코드가 입력된 화면 및 실행 결과 화면 캡쳐하기  

선택 미션 : 매개변수, 기본 매개변수, 가변 매개변수에 대해 간략하게 정리하기 


Chapter 05 함수 

 

05-1. 함수 만들기 

 

  • 기본개념
    • 함수를 호출한다 : 함수를 사용한다, 함수를 실행한다 
    • 매개변수(=parameter) : 함수의 괄호 안에 넣는 변수 
    • 리턴값 : 함수를 호출해서 최종적으로 나오는 결과 
      ex) len("안녕하세요") --> 5 (=리턴값)
    • 참조 : 변수에 접근하는 것 

 

  • 함수의 기본 (매개변수 X)
def 함수 이름():
      문장 
3개의 문장을 포함하는 print_3_times 함수를 만든 후 호출하여 실행

 

 

  • 함수의 기본 (매개변수 O)
def 함수 이름(매개변수, 매개변수, .......):
      문장 
  • 매개변수 value --> "안녕하세요" 가 들어감 
    매개변수 n --> 5가 들어감 

 

 

  • 매개변수와 관련된 TypeError 
1. 함수를 생성할 때 매개변수를 만들었는데, 함수를 호출할 때 매개변수를 덜 넣었을 경우
2. 함수를 생성할 때 매개변수를 만들었는데, 함수를 호출할 때 매개변수를 더 넣은 경우 
따라서, 함수를 호출할 때는 함수를 선언할 때와 같은 개수의 매개변수를 입력해야함 

 

 

  • 가변 매개변수 : 매개변수를 원하는 만큼 받을 수 있는 함수, 매개변수 개수가 변할 수 있음 
    • 가변 매개변수 뒤에는 일반 매개변수가 올 수 없음
    • 가변 매개변수는 하나만 사용할 수 있음 
    • 이러한 제약이 만들어진 이유 : 이러한 제약이 없으면 가변 매개변수가 어디부터 어디까지인지 알 수 없
def 함수 이름(매개변수, 매개변수, ......, *가변 매개변수):
      문장 
  • 매개변수 n을 앞으로 옮기고, 가변 매개변수 *values를 뒤로 밀었음 
    가변 매개변수 *values는 리스트처럼 사용하면 됨 
# 주의할 점 
print_n_times("안녕하세요", "즐거운", "파이썬 프로그래밍", 3) 

 

 

  • 기본 매개변수 : 매개변수에 아무것도 넣지 않아도 들어가는 값 
    • 기본 매개변수 뒤에는 일반 매개변수가 올 수 없음 
    • 기본 매개변수는 다른 매개변수들보다도 가장 마지막에 입력해야함 

-------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

  • 키워드 매개변수 
1. 기본 매개변수가 가변 매개변수보다 앞에 올 때  -->  의미 없음 (에러!!)

n --> "안녕하세요" 가 들어감
values --> ["즐거운", "파이썬 프로그래밍"] 이 들어감
But range() 함수의 매개변수에는 숫자만 들어올 수 있으므로 오류 발생 
2. 가변 매개변수가 기본 매개변수보다 앞에 올 때 --> 가변 매개변수가 우선으로 됨 
키워드 매개변수와 비교
두 가지를 함께 사용할 수 있는 방법은 없을까? 
이런 상황에 대비해서 키워드 매개변수 라는 기능을 만들었음 

 

 

  • 키워드 매개변수 
    • 매개변수 이름을 지정해서 입력하는 매개변수 
while True:
 
    print(".", end="")     # "."을 출력함
                           # 기본적으로 end가 "\n" 이라 줄바꿈이 일어나는데
                           # 빈 문자열 ""로 바꿔서 줄바꿈이 일어나지 않게 함
                           # end="" : 키워드 매개변수
2. 가변 매개변수가 기본 매개변수보다 앞에 올 때 와 비교

 

 

  • 기본 매개변수 중에서 필요한 값만 입력하기 
def test(a, b=10, c=100):
	print(a + b + c)
    
# 1) 기본 형태 
test(10, 20, 30)

# 2) 키워드 매개변수로 모든 매개변수를 지정한 형태 
test(a=10, b=100, c=200)

# 3) 키워드 매개변수로 모든 매개변수를 마구잡이로 지정한 형태
test(c=10, a=100, b=200)

# 4) 키워드 매개변수로 일부 매개변수만 지정한 형태
test(10, c=200)

결과 : 60 / 310/ 310 / 220

 

 

  • return 키워드 
    • 함수를 실행했던 위치로 돌아가라는 의미 
    • 함수를 여기서 끝내라는 의미 
1. 자료 없이 리턴하기 

return 키워드 만나는 순간 함수가 종료되어 결과적으로 "A 위치입니다." 만 출력하고 프로그램이 종료됨 

2. 자료와 함께 리턴하기 
return 뒤에 자료를 입력하면 자료를 가지고 리턴한다 (=돌아간다)
return 뒤에 있는 100을 가지고 감 
3. 아무것도 리턴하지 않기 
아무것도 리턴하지 않았을때는 None이 출력됨 

05-2. 함수의 활용  

재귀 함수 : 자기 자신을 호출하는 함수 

 

1. 팩토리얼 

  • n! = n * (n-1) * (n-2) * ... * 1
1) 반복문으로 팩토리얼 구하기
2) 재귀 함수로 팩토리얼 구하기 

 

 

2. 피보나치 수열 

  • a_1 = 1
    a_2 = 1
    a_n = a_{n-1) + a_{n-2}
1) 코드를 실행했을 때 굉장히 느림 

 

 


🎁기본미션 

 

🎁선택미션 

매개변수, 기본 매개변수, 가변 매개변수에 대해 이해한 내용을 바탕으로 위와 같이 포스팅 함