일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 방송대
- TiL
- 방송대컴퓨터과학과
- Python
- 프로그래머스
- 유노코딩
- 꿀단집
- 파이썬
- 개발자취업
- presignedurl
- 코딩테스트
- aws
- 파이썬프로그래밍기초
- 중간이들
- nestjs
- JavaScript
- 99클럽
- HTML
- node.js
- 코딩테스트준비
- 코드잇
- SQL
- 데이터베이스시스템
- Cookie
- redis
- 엘리스sw트랙
- Git
- 항해99
- MySQL
- CSS
- Today
- Total
배꼽파지 않도록 잘 개발해요
방송대 파이썬 프로그래밍 기초 - 9강. 함수 본문
1. 함수의 이해
함수의 개념
• 함수
- 특정 작업을 수행하는 명령문의 집합
- 특정 작업을 함수의 이름으로 대체
- 유사한 유형의 문제를 해결할 수 있도록 고려
(전체적인 흐름은 같으나, 값은 다름)
* 함수를 부를 때마다 그 함수의 내용을 고쳐야 된다면 그 코드를 쓰지 함수를 쓸 필요가 없음.
• 사용자 정의 함수
- 내장 함수와 달리 사용자의 목적에 따라 정의된 함수
• 반환값에 따른 함수의 종류
- 반환값이 없는 함수 : print (모니터에 값을 출력만 함)
- 반환값이 있는 함수 : input, format, int 등
반환값이 없는 함수 정의
• 구문형식
- 함수 이름은 식별자 (변수, 클래스와 겹칠 수 없음)
- 매개변수 리스트는 0개 이상의 값을 함수 내부로 전달
- 함수 내부에서 매개변수 리스트는 변수와 동일하게 사용
숫자 역순 출력 프로그램
숫자를 입력받고 역순으로 출력하는 함수를 사용한 프로그램을 작성하시오.
숫자가 한 줄씩 띄어서 나오니까 개행문자를 제거해야 하는 상황
프로그램 실행 순서
1) num 변수에 1234 값을 할당함.
2) reverse_number(num)이 호출되어 함수가 실행됨.
3) 함수의 내용인 while 루프가 시작되고, num이 0이 아닐 때까지 반복하여 숫자를 뒤집는 동작이 수행됨.
num | digit | num | |
1회 반복 | 1234 | 4 | 123 |
2회 반복 | 123 | 3 | 12 |
3회 반복 | 12 | 2 | 1 |
4회 반복 | 1 | 1 | 0 |
※ 함수 호출 시에 인자로 전달되는 값과 매개변수의 이름이 달라도 됨.
위 코드에서 3번 num과 9번 num은 다름.
- 9번 num : 함수 호출 시에 인자로 전달되는 값
- 3번 num : 함수의 매개변수
2. 반환값이 있는 함수
반환값이 있는 함수 정의
• 구문형식
- 실행 후 결과값을 남기는 함수
- return 명령어와 반환값을 열거
(return이 여러 개 있어도 되지만 첫 번째 return이 나오는 순간, 그 뒤의 코드들은 실행되지 않음)
- 함수 내부에 여러 개의 return 사용 가능
format 함수
• 실수 데이터 형식화 → 형식 지정자
![]() |
![]() |
format(3.141592,">10.3f") |
동시 할당의 개념
- 복수개의 변수에 값을 동시에 할당
- 변수의 개수에 상응하는 값을 콤마(,)로 나열
- 시퀀스의 개념을 사용하여 하나의 할당연산자만으로 여러 값들을 한 번에 전달
• print(season)과 print(temp) 두 개의 호출이 쉼표로 구분되어 하나의 문장처럼 보이기 때문에, Colab은 각각의 print 함수 호출의 결과를 튜플 형태로 묶어서 반환함.
→ (None, None)이라는 튜플이 결과에 함께 표시되는 것임.
• None은 파이썬에서 함수나 메소드가 반환하는 값이 없음을 나타내는 내장 객체
→ (None, None)은 print(season)과 print(temp)의 반환 값이 없음을 나타내는 것이며, 이는 출력 결과에 표시됨.
→ 코드 실행에는 영향을 미치지 않고 출력 결과에서만 확인할 수 있는 현상임.
교환(swap)
복수 개의 변수에 할당하는 값을 맞바꿈
정렬 프로그램
세 개의 사용자 입력을 오름차순으로 정렬하는 함수를 이용하여 정렬된 값을 출력하는 프로그램을 작성하시오.
사용자가 입력한 숫자 a, b, c가 함수를 통해 순서가 바뀌어 출력될 수 있지만 이 코드 내에서 입력한 숫자의 순서는 그대로임.
→ 함수 내부에는 값만 전달되므로, 변수에는 영향이 가지 않음.
3. 함수의 확장
값의 전달
함수가 호출될 때, 값이 형식 매개변수에 전달 (변수가 전달되는 게 아님)
inc(x) 함수 호출이 inc 함수 정의보다 앞에 있어서 오류가 남.
inc(x) 함수 호출 시점에서는 inc 함수가 아직 정의되지 않았기 때문에 오류가 발생함.
파이썬은 위에서 아래로 코드를 실행하는데, 함수가 호출되기 전에 함수가 정의되어 있어야 함.
![]() |
![]() |
함수의 내부와 외부에서 동일한 이름의 변수를 사용하지 않도록 명확하게 구분지어서 짓자.
다음 코드에서 'print(rad, hei)'가 출력하는 것은 10, 50 일까 아니면 0, 0일까?
함수 안에서 r, h = 0, 0으로 재할당한 값은 함수 외부에는 영향을 주지 않음.
변수의 스코프(scope)
• 프로그램에서 변수가 참조될 수 있는 영역
- 전역변수 : 프로그램 전체 영역에서 접근
- 지역변수 : 선언된 함수 내부에서만 접근
![]() |
![]() |
• Colab에서 실행하면 y의 값이 0으로 출력됨. (y 변수가 이전에 선언되어 초기화된 것 같음.)
• x는 지역변수, y는 전역변수
기본 매개변수 (Default Argument)
• 함수 호출 시 매개변수가 전달되지 않을 경우 기본값이 전달되는 매개변수
• 구문형식
• 기본 매개변수는 일반 매개변수 앞에 위치할 수 없음.
일반 매개변수 → 기본 매개변수 순서대로 작성하자.
가변 매개변수 (Variadic Arguments)
• 함수 호출 시 매개변수를 사용자가 원하는 개수 만큼 지정할 수 있는 매개변수
가변 매개변수로 파라미터를 정의했기 때문에 이렇게 사용할 수 있음.
• 구문형식
• 일반 매개변수 앞에 위치할 수 없음
• 가변 매개변수는 1개만 사용 가능
• 가변 매개변수는 전달될 때 리스트의 형태로 전달되니까 for문을 사용해야됨.
• 파라미터의 개수가 정해지지 않았다면 파라미터로 넘어오는 값들은 시퀀스 형태로 전달됨.
abc : 리스트 변수로서 전체 리스트를 가변 매개변수로 전달하는 데 사용됨. 세 개의 원소를 가지고 있음.
*abc : 리스트 abc의 각 원소들이 가변 매개변수 args에 언패킹되어 함수 eatplay에 전달됨.
param : args라는 가변 매개변수 안에서 각각의 원소들을 반복적으로 처리하는 데 사용되는 변수 이름, for 반복문에서 사용됨.
순서 | 수행 단계 | sum | count | i | avg |
1 | sum = 0 | 0 | - | - | - |
2 | count = 0 | 0 | 0 | - | - |
3 | for i in numbers: | 0 | 0 | - | - |
4 | sum = sum + i | 20 | 0 | 20 | - |
5 | count = count + 1 | 20 | 1 | - | - |
6 | sum = sum + i | 45 | 1 | 25 | - |
7 | count = count + 1 | 45 | 2 | - | |
8 | sum = sum + i | 55 | 2 | 10 | |
9 | count = count + 1 | 55 | 3 | - | |
10 | sum = sum + i | 140 | 3 | 85 | |
11 | count = count + 1 | 140 | 4 | - | |
12 | sum = sum + i | 240 | 4 | 100 | |
13 | count = count + 1 | 240 | 5 | - | |
14 | sum = sum + i | 390 | 5 | 150 | |
15 | count = count + 1 | 390 | 6 | - | |
16 | if count != 0: (else는 건너 뜀) |
390 | 6 | - | |
17 | avg = sum/count | 390 | 6 | - | 65.0 |
18 | print("평균은",avg,"입니다.") | 65.0 | |||
19 | print("합계는",sum,"입니다.") | 390 |
4. 원뿔 계산 프로그램 개선
원뿔 계산을 불규칙적으로 다른 환경에서 요청하는 상황이면?
원뿔 계산 함수 정의
만들어진 함수를 별도로 사용할 수 있는 방법이 필요함 (함수호출이 필요함)
함수의 호출과 실행흐름
Line 9까지가 함수 블록 부분, Line 12부터는 함수 외부 부분임.
프로그램을 처음 실행하면 Line 12부터 시작함.
정의와 호출로 구성되는 함수
반환값이 있는 함수
원뿔 계산 결과 출력결과 형식을 상황에 따라 변경하고 싶다면?
![]() |
![]() |
반환값이 있는 함수 | 반환값이 없는 함수 |
- 함수를 호출한 곳에서 반환된 부피 값을 받아서 원하는 대로 처리할 수 있도록 해줌. - rtn_cone_vol(10, 20)을 호출한 후에 반환된 부피 값을 다른 변수에 저장하거나 다른 함수의 인자로 사용할 수 있음. |
- 함수 prt_cone_vol()에서 계산한 원뿔의 부피를 직접 print() 함수를 사용하여 화면에 출력함. - 함수를 호출한 곳에서는 반환된 부피 값을 따로 받아올 수 없고 화면에 출력되기만 함. |
→ 부피 값을 반환하여 결과를 활용할 수 있도록 함. | → 부피 값을 함수 내에서 바로 출력함. |
부피와 겉넓이를 모두 반환하려면?
→ return 옆에 vol, surf 변수를 각각 써주면 된다.
부피와 겉넓이를 각각 반환하려면?
→ 변수를 각각 하나씩 생성해주고 출력을 따로 하면 된다.
단위 원뿔(반지름 20, 높이 30)의 부피와 겉넓이를 출력하려면?
반지름은 10이고 높이가 1, 5, 14, 26, 31인 원뿔의 부피와 겉넓이를 각각 출력하시오.
함수를 이용해서 만들되, 리스트를 만든 것과 같은 효과가 나는 프로그램을 만들 것임.
매개변수를 입력하지 않으면 기본값이 적용되는 프로그램
매개변수에다가 r = 20, h = 30을 지정해주면 이것이 기본값이 됨.
함수 매개변수에 기본값을 지정해줬기 때문에 에러가 나지 않는다
'방송대 컴퓨터과학과 > 파이썬 프로그래밍 기초' 카테고리의 다른 글
방송대 파이썬 프로그래밍 기초 - 11강. 모듈 (0) | 2023.05.22 |
---|---|
방송대 파이썬 프로그래밍 기초 - 10강. 객체지향 (1) | 2023.04.22 |
방송대 파이썬 프로그래밍 기초 - 8강. 체크포인트1 (1-7강) (0) | 2023.04.12 |
방송대 파이썬 프로그래밍 기초 - 7강. 반복구조 (0) | 2023.04.11 |
방송대 파이썬 프로그래밍 기초 - 6강. 선택구조 (0) | 2023.04.10 |