함수
함수를 사용하는 이유
(1) 반복적으로 사용되는 가치 있는 부분을 한 뭉치로 묶어서 어떤 입력값을 주었을 때 어떤 결과값을 돌려준다
(2) 기능 단위의 함수로 분리해 놓으면 프로그램 흐름을 일목요연하게 볼수 있다.
(3) 프로그램 흐름도 잘 파악할 수 있고 오류가 어디에서 나는지도 쉽게 알아차릴 수 있다.
파이썬 함수의 구조
def는 함수를 만들때 사용하는 예약어, 함수명은 개발자가 임의로 만들어 준다. 매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.
def 함수명(매개변수) :
수행할 문장1
수행할 문장2
...
def add(a, b) :
return a+b
a = 3
b = 4
c = add(a, b)
print(c) # 출력결과 : 7
위의 함수 이름은 add이고 입력값을 2개 받아서 더한값을 리턴(출력)하는 함수이다. 변수 a에 3, b에 4를 대입한 후 변수 c에 add 함수의 리턴값을 대입하면 c는 a와 b를 더한 값 7이 출력되는 것을 확인할 수 있다.
매개변수와 인수
매개변수와 인수는 혼용해서 사용되는 헷갈리는 용어다. 매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 함수를 호출할 때 전달하는 입력값을 의미한다.
def add(a, b) # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수
- 매개변수 : 함수에 전달된 값을 저장하는 변수
- 인수 : 함수에 전달하는 값
여러개의 입력값을 받는 함수 만들기
예제로 여러 개의 입력값을 모두 더하는 함수를 만들어 보자. add_many(1, 2)면 3, add_many(1, 2, 3)이면 6, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)이면 55를 리턴하는 함수를 만들어 보자
def add_many(*nums) :
result = 0
for i in nums :
result = result + i
return result
result = add_many(1, 2, 3)
print(result) # 출력결과 : 6
result = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(result) # 출력결과 : 55
add_many함수는 입력값이 3개든 10개든 상관이 없다. *nums 처럼 매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 준다. 또 *nums 하나만 사용하는 것이 아니라 다른 매개변수도 같이 사용할 수 있다.
def add_mul(choice, *nums) :
if choice == "add" :
result = 0
for i in nums :
result = result + i
elif choice == "mul" :
result = 1
for i in nums :
result = result * i
return result
result = add_mul('add', 1, 2, 3, 4, 5)
print(result) # 출력결과 : 15
result = add_mul('mul', 1, 2, 3, 4, 5)
print(result) # 출력결과 : 120
사용자 입력과 출력
사용자 입력(input)
사용자가 입력한 값을 어떤 변수에 대입하고 출력한다.
a = input()
# 입력값 : dokev archive python chapter4
print(a) # 출력값 : dokev archive python chapter4
프롬프트를 띄워 사용자 입력 받기
input("안내문구") 와 같은 형식으로 사용자 입력을 받아본다
number = input("숫자를 입력하세요 >> ")
# 입력값 : 3
print(number) # 출력결과 : 3
print(type(number)) # 출력결과 : <class 'str'>
위에 number 변수에 입력된 값은 숫자형식의 3이 아니라 문자형식의 '3' 임을 기억하자!
출력(print)
(1) 큰 따옴표(")로 둘러싸인 문자열은 (+) 연산과 동일하다
(2) 문자열 띄어쓰기는 콤마로 한다
(3) 한줄에 결과값 출력하기
print("abc" "def" "ghi") # 출력결과 : abcdefghi
print("abc" + "def" + "ghi") # 출력결과 : abcdefghi
print("abc", "def", "ghi") # 출력결과 : abc de fghi
for i in range(10) :
print(i, end=' ')
# 출력결과 : 0 1 2 3 4 5 6 7 8 9
파일 읽고 쓰기
파일 생성하기
프로그램을 실행한 디렉터리에 새로운 파일을 만들 수 있다. 파이썬 내장함수 open을 사용해서 파일을 생성한다. open함수는 "파일 이름" 과 "파일 열기 모드" 를 입력값으로 받고 결괏값으로 파일 객체를 리턴한다.
파일 객체 = open(파일 이름, 파일 열기 모드)
파일열기모드 | 설명 |
r | 읽기모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
a | 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
f = open("새파일.txt", 'w')
f.close()
파일을 쓰기 모드로 열면 해당 파일이 이미 존재할 경우 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다. 그리고 파일을 프로젝트가 생성된 경로가 아니라 (windows10 기준 바탕화면) C:/Users/user/Desktop/ 경로에 생성하고 싶다면 다음과 같이 작성한다.
f = open("C:/Users/user/Desktop/새파일.txt", 'w')
f.close()
f.close() 는 열려 있는 파일 객체를 닫아 주는 역할을 한다. 프로그램을 종료할 때 파이썬 프로그램이 열려 있는 파일 객체를 자동으로 닫아주기 때문에 생략이 가능하지만 close() 를 사용해서 열려있는 파일을 직접 닫아주는 것이 좋다. 쓰기모드로 열었던 파일을 닫지 않고 다시 사용하려고 하면 오류가 발생하기 때문이다.
쓰기모드로 내용작성하기
ㅇ