디버깅
디버깅은 버그를 찾는 행동
파이썬에서 pdb라는 디버깅 도구가 있다
import pdb
pdb.set_trace()
-> pdb.set_trace()
(Pdb)
breakpoint()만 적어도 디버깅이 가능하긴하다 (파이썬 3.7이상)
sum =0
breakpoint()
print(sum)
예시
num 까지 반복문 돌며 sum 증가 / 반복문 돌아갈때 변화하는 값 확인
import pdb
def simple_func(num):
sum =0
pdb.set_trace()
for i in range(1, num +1):
pdb.set_trace()
sum += i
return sum
simple_func(4)
실행화면
-> for i in range(1, num +1):
(Pdb)
sum 과 i 쳐봐라
sum 은 0으로 보이지만 i는 정의도 되어있지 않다는 에러 뜸
기본이동 -
set_trace함수가 넘어가기 위해 n을 쳐본다 여기에서 i나 sum을 쳐보면 정상
python 함수
함수 생성
def print_hello_1(name):
print(f"Hello {name}")
함수 정의 -->
def 함수명칭 ( 파라미터 ) :
" 함수 문서 "
함수 내용
return [표현식]
파라미터 -- 함수 정의할때 사용되는 소괄호에 들어가는 것
파라미터를 어느 순서로 받는지에 따라 함수 호출할 때 순서 지켜 인수 넘겨야한다
참조 vs 값 ?
인수들이 참조로 함수에 전달이 된다 즉 객체의 주소값을 전달한다
참조로전달되지만 immutable = 변경 불가한 객체들은 값으로 전달된다
int, str 등은 값으로 전달 - list, dict 와 같은 객체들은 참조값으로 전달
< 인수 >
필수 인수 : 위치지키며 전달되는 인수
키워드 인수 : 파라미터 이름을 사용해 전달되는 인수
기본 인수 : 파라미터에서 기본으로 사용되는 값
- 필수 인수 -
필수 인수와 같은 경우에는 위에서 나왔던 예시처럼 위치에 따라 전달되는 인수
순서를 지켜야하며 함수에서 파라미터로 정의했기 때문에 필수로 넘겨야 함
def person_info(first_name, last_name):
print (f"Hello {first_name}, {last_name} !")
^ 함수가 2개의 파마리미터 정의, 2개의 인수 넘기기
- 키워드 인수 -
위치 인수로 전달하지 않고 키워드 사용해 전달
person_info(last_name="bob", first_name ="sponge")
^ 키워드 명시해 실행, 필수 인수들은 순서 상관없음
- 기본 인수 -
함수에서 받는 파라미터 값들에 대한 기본값 설정- 인수 넘기지 않느 ㄴ경우 기본값들 설정
파라미터 설정시, 기본값 정하기
def person_data(name, type_p="human"):
print(f"hello {name}, you are {type_p}")
^ tyepe_p 인수를 넘기지 않으면 기본값은 human으로 들어간다
**주의 사항 : 기본값 설정된 파라미터들은 기본값 없는 파라미터 뒤에 등장해야한다
<return>
리턴은 함수종료하고 호출자에게 표현 전달
리턴에 문구를 넣어 특정 결과 리턴할 수 있음
def print_hello_4(name):
return f"hello {name}"