-
[TIL] 20.12.17 Python 함수, 파일 읽기/쓰기Cloud/클라우드 아키택트 양성과정 2021. 1. 3. 22:08
[20.12.17] Python 함수, 파일 읽기/쓰기
함수와 파일 읽고 쓰기에 대해 학습했다.
* 함수(Function)
- 어떠한 입력값을 갖고 특정 일을 수행한 뒤 결과물을 내놓는 것.
- 함수를 사용하여 반복적인 루틴을 따로 분리한 후 재사용하기 좋다.
- 함수를 사용하면 프로그램의 흐름과 오류 파악이 쉽다.
* 함수의 구조
- def : 함수 생성 시 사용하는 예약어
- 함수에 따라 매개변수(함수에 입력값으로 전달되는 변수)를 정의할 수 있음
# 기본 형태 def add(a,b): return a + b # 함수 호출 c = add(1,2) print(c) # 출력 : 3
- 매개변수(Parameter) : 함수에 입력으로 전달된 값을 받는 변수
- 인수(Arguments) : 함수를 호출할 때 전달받는 입력값
- 인수는 사용자가 전달하는 값이고 매개변수는 함수가 사용자의 전달 값을 받아서 저장하는 변수다.
* 함수의 형태
1) 입력값, 결과값이 있는 함수
def add(a,b): return a + b
2) 입력값이 없는 함수
def hello(): return 'hello' print(hello()) # 출력 : hello
3) 결과값이 없는 함수
def add(a,b): print(f'두 수의 합은 {a+b}입니다.') add(1,2) # 출력 : 두 수의 합은 3입니다.
> 실제로 결과값이 없는 것은 아니고 출력해보면 None 객체로 반환된다.
4) 입력값, 결과값이 없는 함수
def hello(): print('hello') hello() # 출력 : hello
* 매개변수 활용
1) 매개변수 지정
> 매개변수를 직접 지정해서 사용이 가능하다.
def add(a,b): return a+b result = add(a=3, b=7) result2 = add(b=7, a=3)
> 매개변수를 직접 지정할 시 순서에 상관없이 사용할 수 있다.
2) 매개변수 초기값 설정
> 함수 선언 시 초기값을 미리 설정할 수 있다.
# 함수 선언 def print_info(name, old, man=True): print(f'이름은 {name} 입니다.') print(f'나이는 {old} 입니다.') if man: print('성별은 남자입니다.') else: print('성별은 여자입니다.') # 함수 호출 print_info('홍길동', 20) # 초기값을 정해주면 값을 전달해주지 않아도 함수 호출 가능. print_info('홍길동', 20, True) # 위 두 함수는 같은 내용을 출력한다.
* I/O
1) 사용자 입력(input)
> 사용자가 입력한 값을 문자열 형태로 받는 함수이다.
a = input() # 사용자의 입력 값을 문자열로 저장 b = input('값을 입력하세요 : ') # 괄호 안에 내용을 출력한 뒤 입력한 값을 문자열로 저장
2) 출력 print()
> 문자열 출력 시 큰 따옴표를 이용해 문자열을 연결할 수 있다.
print("a" "b" "c") # 출력 : abc print("a"+"b"+"c") # 출력 : abc print("a","b","c") # 출력 : a b c for i in range(5): print(i, end=' ') # end로 끝 문자를 지정할 수 있다. (생략할 경우 \n, 개행문자가 들어감) # 출력 : 0 1 2 3 4
* 파일 읽기, 쓰기
1) 파일 생성
> open() 함수를 사용해서 파일을 생성한다.
> 파일 이름, 파일 열기 모드를 입력값으로 받고 파일 객체를 반환한다.
> close() 함수로 열려 있는 파일 객체를 닫을 수 있다.
> 파일은 기본적으로 해당 .py 파일의 경로와 동일한 곳에서 객체를 생성한다.
※ 파일 열기 모드
파일 열기 모드 설명 r 읽기 모드 - 파일 읽을 때 사용 w 쓰기 모드 - 파일에 내용을 쓸 때 사용(이전 내용 삭제) a 추가 모드 - 파일의 마지막에 새 내용 추가할 때 사용 2) 파일 읽기
> 파일의 내용을 읽는 방법으로는 read(), readline(), readlines()가 있다.
> 메모장을 이용해서 '새파일.txt'라는 이름으로 파일을 생성해놨다.
새파일.txt 2-a) read()
> 파일의 내용 전체를 문자열 형태로 받아오는 함수다.
f = open("새파일.txt", "r", encoding="UTF-8") print(f.read()) # 파일의 전체 내용 문자열로 받아옴. ''' 출력 1번 줄 2번 줄 3번 줄 4번 줄 5번 줄 ''' f.close()
> 'encoding = "UTF-8"'은 인코딩 방식이다. 파일을 읽고 쓸 때는 이 인코딩 방식이 동일해야 한다.
2-b) readline()
> 파일의 내용 중 한 줄을 읽어오는 함수이다.
> 여러 줄을 받아오고 싶다면 여러 번 호출하면 된다.
f = open("새파일.txt", "r", encoding = "UTF-8") print(f.readline()) # 출력 : 1번 줄 print(f.readline()) # 출력 : 2번 줄 f.close()
2-c) readlines()
> 파일의 내용 전체를 한 줄씩 나눠서 리스트로 반환하는 함수이다.
f = open("새파일.txt", "r", encoding = "UTF-8") print(f.readlines()) # 출력 : ['1번 줄\n', '2번 줄\n', '3번 줄\n', '4번 줄\n', '5번 줄'] f.close()
3) 파일 쓰기
> write() 함수를 활용해서 파일에 내용을 쓸 수 있다.
> 파일에 내용을 쓸 땐 파일 읽기 모드가 'w', 'a' 인지를 명확하게 체크할 필요가 있다.
f = open("a.txt", "w", encoding="UTF-8") f.write("테스트") f.close()
a.txt > 'a.txt'라는 파일에 '테스트'라는 텍스트가 추가됐다.
> 만약 파일 열기 모드를 'w'로 다시 파일을 열고 쓸 경우 위 내용은 지워지고 새로운 내용이 쓰인다.
> 파일 열기 모드를 'r'로 할 경우 기존 파일에 내용을 추가할 수 있다.
* 실습 문제
1) 함수 만들기
a. 함수명 : printAvg, 매개변수 : 3개의 숫자, 동작 : 평균 출력
def printAvg(a,b,c): result = (a+b+c)/3 print(result) printAvg(1,2,3)
b. 함수명 : printInfo, 매개변수 : 이름, 나이, 동작 : 이름, 나이 출력
def printInfo(name, age): print(f'이름 : {name}') print(f'나이 : {age}') name = input('이름을 입력하세요 : ') age = input('나이를 입력하세요 : ') printInfo(name,age)
c. 함수명 : bmi, 매개변수 : 키, 동작 : 표준체중 = (키-100)*0.9 를 계산해서 반환
def bmi(height): return (height-100) * 0.9
d. 함수명 : makeAvg, 매개변수 : 3개의 숫자, 동작 : 평균 반환
def makeAvg(a,b,c): return (a+b+c)/3
2) 파일 생성
> 사용자에게 이름을 입력받고 'students.txt'파일에 내용을 저장하기
> 이름 입력 후 사용자가 Y를 누르면 추가 입력, N을 누르면 프로그램을 종료.
f = open("students.txt", "a", encoding="UTF-8") while 1: name = input('이름을 입력하세요 : ') add = input('추가로 입력하시겠습니까? (Y/N)\n') if add == 'Y': continue else: f.write(name) break f.close()
※ 이 게시물은 'Do it 점프 투 파이썬' 교재와 엔코아 플레이데이터에서 배운 내용을 토대로 작성되었습니다.
'Cloud > 클라우드 아키택트 양성과정' 카테고리의 다른 글
[TIL] 20.12.21 모듈, 예외처리, 내장 함수 (0) 2021.01.08 [TIL] 20.12.18 클래스, 객체 (0) 2021.01.07 [TIL] 20.12.16 Python 제어문(조건문, 반복문) (0) 2021.01.01 [TIL] 20.12.15 Jupyter notebook 설치, Google colab 사용, 파이썬 자료형 (0) 2020.12.28 [TIL] 20.12.14 (2) 파이썬 개념 / 특징 (0) 2020.12.22