10장 함수
이 장의 내용 10.1 함수 정의 10.2 지역 변수와 전역 변수 10.3 함수 예제 10.4 재귀 함수 10.5 모듈
10.1 함수 정의
함수란 무엇인가? 함수 f 예: 10% 할인 가격 계산 함수 값 x를 받아서 어떤 계산을 수행하여 결과값 y = f(x)를 돌려준다. 예: 10% 할인 가격 계산 함수 함수 정의 f(x) = x – x * 0.1 함수 사용(호출) f(48000) = 43200
함수 정의 및 호출 def 키워드를 이용해서 새로운 함수 정의 함수 호출 함수 이름 매개변수parameter : 함수가 값을 받기 위한 변수 함수본체function body : 이 함수가 수행할 문장들 함수 호출 정의된 함수 내의 코드를 실행한다. 인자: 함수를 호출할 때 전달하는 값
예: 함수 정의 및 호출
예: 할인율을 받은 할인 가격 계산 함수 매개변수 가격 : price 할인율 : rate
결과값을 반환하지 않는 함수 수학에서의 함수는 반드시 결과값을 반환하여야 한다. 파이썬 언어에서는 함수가 결과값을 반환하지 않아도 된다.
10.2 지역 변수와 전역 변수
지역 변수local variable 함수 내에서 선언된 변수는 함수 내에서만 사용 가능 유효범위scope 변수 result, 매개변수 price 유효범위scope 선언된 변수가 사용될 수 있는 범위 지역 변수는 그 유효범위가 함수 내부 함수 밖에서 사용 오류
전역 변수global variable 함수 밖에서 선언된 전역 변수 함수 밖에서뿐만 아니라 함수 내에서도 사용 가능.
주의사항: 전역 변수 사용 함수 내에서 전역 변수 사용은 가능하지만 수정은 불가 ! 함수 내에서 대입문을 사용하여 전역 변수 수정을 시도하면 자동적으로 그 이름에 해당하는 새로운 지역 변수를 만든다.
전역 변수 사용 오류 …
함수 내에서 전역 변수 수정 함수 내에서 전역 변수 값을 수정하려면 전역 변수를 먼저 global로 선언해야 한다
10.3 함수 예제
삼각형 면적 계산 함수 헤론의 공식
평균과 중앙값 계산 함수
실행 결과
체질량지수 계산 함수
파일 내의 단어 출현 횟수
실행 결과
10.4 재귀 함수
재귀 함수recursive function 함수를 정의하는데 자기 자신을 사용하여 정의하는 함수 예: 팩토리얼 재귀적 정의 재귀 함수
팩토리얼 함수
예: 리스트에서 값 검색 함수 리스트에서 순차적으로 값을 검색한다. 첫 번째 원소와 비교하여 찾으면 True 리턴 그렇지 않으면 나머지 원소에 대해서 재귀 호출
예: 리스트 내의 값의 개수 계산 함수 리스트에서 순차적으로 값을 검색하여 개수를 계산한다. 첫 번째 원소와 비교하고, 나머지 원소에 대해서 재귀 호출 총갯수 = 재귀 호출에서 찾은 개수(n) + 1 혹은 0
10.5 모듈
모듈 사용하기 표준 라이브러리 모듈 random 모듈: 난수 생성 time 모듈: 시간 날짜 정보
모듈 사용 모듈 내의 함수 import 예
모듈 만들기 모듈 함수나 변수 또는 클래스 들을 모아 놓은 파이썬 파일(.py)
만든 모듈 사용하기 모듈 파일을 저장한 디렉터리로 이동 후에 파이썬 실행 sys.path.append 사용하기
만든 모듈 사용하기 환경 변수 PYTHONPATH 사용하기
Key Point © 우균, 창병모
Key Point def 키워드를 이용해서 새로운 함수를 정의(function definition)할 수 있다. 정의된 함수를 호출하여 실행하는 것을 함수 호출(function call)이라고 한다. 함수 내에서 선언된 변수는 함수 내에서만 사용될 수 있으며 이러한 변수를 지역 변수(local variable)라고 한다. 어떤 함수는 함수를 정의하는데 자기 자신을 사용하여 정의할 수 있는데 이러한 함수를 재귀함수(recursive function)라고 한다 © 우균, 창병모
프로그래밍 실습 © 우균, 창병모
▶ 프로그래밍 실습 1 편의점에서 재고 관리를 수행하는 프로그램을 작성해보자. 편의점에서 판매하는 물건의 재고를 사전(dictionary)에 저장한다. 커피음료, 펜, 종이컵, 우유, 콜라, 책, … 재고관리를 위해 다음 기능을 함수 형태로 구현한다. 물건의 재고를 출력한다. 물건의 재고를 증가한다. 물건의 재고를 감소한다. © 우균, 창병모
▶ 프로그래밍 실습 2 search 함수를 수정하여 찾고자 하는 값의 리스트 내의 인덱스를 계산하는 함수를 작성하시오. 만약 찾고자 하는 값이 첫 번째 원소와 같으면 해당 값을 찾았으므로 인덱스 0를 반환한다. 그렇지 않으면 나머지 리스트(lst[1:])에 대해서 검색하도록 이 함수를 재귀 호출하고 이 호출이 반환한 인덱스에 1을 더하여 반환하면 된다. 이렇게 하여 리스트 내의 몇 번째 원소에서 해당 값을 찾았는지 계산한다. © 우균, 창병모