전공과목 정리/프로그래밍언어 (Python, C++)

[파이썬프로그래밍🐍] 함수, 파일

최연재 2022. 1. 29. 22:41

출처 : 난생처음 컴퓨팅사고 with 파이썬, 두근두근 파이썬, 파이썬 코딩 도장

-------

개발 블로그를 티스토리로 옮기며 기존의 네이버 블로그에 작성한 내용을 그대로 옮겼습니다.

https://blog.naver.com/0yeonjae2/222593909231

-------

1. 함수

1) 함수의 종류

- 내장 함수 : 파이썬에서 기본으로 제공하는 함수로 파이썬을 설치하면 바로 사용할 수 있다.

ex) print(), len()

- 사용자 함수 : 사용자가 필요할 때 직접 만들어 사용한다.

 

2) 함수 사용 이유

- 코드 재사용 : 매번 중복되는 코드를 함수로 만들어 사용해 코드의 양을 줄이고 간결화할 수 있다.

- 모듈화

:모듈은 특정 기능의 작은 프로그램을 뜻한다. 특정 기능이 함수로 모듈화되면 다른 프로그램에 쉽게 이식하여 사용할 수 있으며 그만큼 프로그램을 만드는 시간도 단축된다.

- 코드 수정 용이 : 코드에 수정 사항이 발생했을 때 함수를 사용하지 않았다면 해당부분이 포함된 모든 코드를 수정해야 한다.

 

3) 함수의 구성 요소

(1)함수 정의 (function definition)

: 함수를 정의할 때는 def 키워드, 함수명, 콜론(:), 실행문으로 나눠 작성한다.

def 함수명() :

실행문

 

(2) 함수명

: def 키워드 다음에는 함수명을 명시한다. 함수명을 지을 때 유의사항은 다음과 같다.

① 내장함수명과 동일하면 안 된다.

② 첫 글자는 주로 소문자로 시작한다.

③ 첫 글자로 숫자를 사용할 수 없다.

④ 특수문자는 _만 사용할 수 있다.

 

(3) 콜론(:)과 실행문

콜론(:)은 실행문(코드 블록)의 시작을 나타내는 것으로 if문, for문과 사용 방법이 같다.

실행문 역시 들여쓰기로 구분한다.

 

4) 함수 호출

- 함수를 사용하는 것을 의미한다.

- 함수 호출은 함수 실행이 필요한 곳에서 함수 이름을 작성하면 된다.

 

5) 함수의 값 반환

-return 키워드 : 함수는 실행이 끝난 후에 나온 결과물을 호출부로 반환할 수 있다.

ex)

def calculate(radius) : # radius는 매개변수이다.

area = 0

area = 3.14*radius**2

return area

 

areaA = calculate(3.0) # 3.0은 인수이다.

-> 함수 실행 결과 값이 areaA에 대입된다.

 

6) 함수에 입력 전달하기

매개변수는 호출부에서 전달하는 인수의 개수와 순서에 맞춰 선언한다.

인수의 개수와 매개변수의 일치하지 않으면 에러가 발생한다.

 

함수를 호출할 때 전달하는 인수의 개수가 수시로 변경되는 경우 * 기호를 사용한다.

*기호를 사용하면 매개변수의 개수를 변경할 필요 없이 해결 가능하다.

ex)

def calAve(*scores) :

sum = 0

num = len(scores)

for score in scores :

sum += score

ave = sum / num

 

return ave

 

7) 재귀(Recursive) 함수

- 함수 안에서 자신을 다시 호출하는 함수

- 재귀 함수는 자신을 계속 호출하기 때문에 함수 호출을 종료할 수 있는 코드가 반드시 있어야 한다.

ex)

def factorial(num):

if num ==1:

return 1

else:

return num*factorial(num-1)

 

8) 변수의 종류

- 지역 변수(local variable) : 함수 안에서 선언되는 변수

- 전역 변수(global variable) : 함수 외부에서 선언되는 변수

 

지역변수는 함수 안에서만 사용 가능하지만 전역 변수는 함수 외부, 내부에서 모두 사용 가능하다.

- global 키워드 : 전역변수를 가리킬 때 사용하는 키워드이다.

 

9) 디폴트 인수

: 함수의 매개변수가 가질 수 있는 기본값

ex)

def hello(name, msg="만나서 반가워요!"):

print("안녕", name+",", msg)

hello("연재")

안녕 연재, 만나서 반가워요!

 

10) 키워드 인수

: 인수의 이름을 명시적으로 지정해 전달하는 방법

ex)

def cal(a,b,c) :

return a+b+c

 

>>> cal(c= 30, a=1, b= 5)

36


2. 파일

1) 파일에서 데이터 읽기

① 파일을 연다. -> 파일 객체 = open("파일 이름", "파일 모드")

② 파일에서 데이터를 읽거나 쓸 수 있다.

③ 파일과 관련된 작업이 모두 종료되면 파일을 닫아야 한다. -> 파일객체.close()

 

2) 파일 모드

- 읽기 전용 : 'r'

- 쓰기 전용

- 'w' : 파일의 내용을 버림

- 'a' : 파일 끝에 추가

- 'x' : 파일이 있으면 에러

- 읽기 & 쓰기

- 'w+' : 파일의 내용을 버림

- 파일의 내용 유지

- 'r+' : 파일 처음부터 쓰기

- 'a+' : 파일 끝부터 쓰기

- 'x+' : 파일이 있으면 에러

 

3) 파일 읽기

(1) 전체 데이터 읽기

infile = open("file.txt", "r")

lines = infile.read()

print(lines)

infile.close()

(2) 한 줄 읽기

infile = open("file.txt", "r")

line = infile.readline()

print(line)

infile.close()

두 번째 예시에서 file.readline() 대신 file.readlines()을 사용하면 다음과 같은 결과가 나온다.

각각의 줄이 리스트 안에 저장된다.

문장의 끝마다 \n가 있는데 이는 우리가 파일을 작성하는 과정에서 사용한 엔터키가 표시된 것이다.

한 줄씩 \n 표시 없이 출력하려면 다음과 같이 코드를 작성하면 된다.

작성된 코드 내용을 파악하면 다음과 같다.

strip() : 문자열에서 특정 문자를 제거하기 위해 사용한다.

파일에 데이터가 얼마나 있는지 모르기 때문에 한 줄을 먼저 읽은 후 빈칸이 나올 때(==문장의 끝)까지 출력한다.

 

(3) 단어 읽기

- split() 함수 : 공백문자를 이용하여 문자열에서 단어를 분리한다.

 

4) 파일에 데이터 쓰기

- 기존의 데이터를 지우고 새로운 데이터를 쓰기 위해 open()를 사용할 때 "w" 모드를 사용한다.

write("추가내용\n") 에서 줄바꿈 기호를 사용하지 않으면

줄바꿈 없이 문장끼리 이어져 출력된다.

 

- 기존의 데이터가 유지된 상태에서 새로운 데이터를 추가하려면 "a" 파일 모드를 사용한다.

파이썬 코드를 실행하고 파일을 열어보면 새롭게 추가된 문장을 확인할 수 있다.

5) 파일 복사하기

infileName = input("입력 파일 이름 : ")

outfileName = input("출력 파일 이름 : ")

 

infile = open(infileName, "r")

outfile = open(outfileName, "w")

 

s = infile.read()

outfile.write(s)

 

infile.close()

outfile.close()

 

혹은 shutil 패키지를 이용할 수 있다.

import shutil

shutil.copy("입력 파일 이름", "출력 파일 이름")