AIFFEL Python Master 핵심정리 #03 파일 입출력, 함수

이재준·2021년 7월 9일
0

AIFFEL Python Master

목록 보기
3/5
post-thumbnail

⭐ 파일 열기, 닫기

파일 읽기/쓰기 전에는 open 함수로 파일을 열어서 파일 객체를 얻어야 한다. 그 다음 파일 읽기/쓰기 작업이 끝나면 반드시 close로 파일 객체를 닫아야 한다.

파일객체 = open(파일이름, 파일모드)    # 파일 열기
파일객체.close()                       # 파일 객체 닫기
 
with open(파일이름, 파일모드) as 파일객체:    # 파일을 사용한 뒤 자동으로 파일 객체를 닫아줌
    코드


파일 모드

파일 모드기능설명
'r'읽기 전용파일을 읽기 전용으로 열기. 단, 파일이 반드시 있어야 하며 파일이 없으면 에러 발생
'w'쓰기 전용쓰기 전용으로 새 파일을 생성. 만약 파일이 있으면 내용을 덮어씀
'a'추가파일을 열어 파일 끝에 값을 이어 씀. 만약 파일이 없으면 파일을 생성
'x'배타적 생성(쓰기)파일을 쓰기 모드로 생성. 파일이 이미 있으면 에러 발생
'r+'읽기/쓰기파일을 읽기/쓰기용으로 열기. 단, 파일이 반드시 있어야 하며 파일이 없으면 에러 발생
'w+'읽기/쓰기파일을 읽기/쓰기용으로 열기. 파일이 없으면 파일을 생성하고, 파일이 있으면 내용을 덮어씀
'a+'추가(읽기/쓰기)파일을 열어 파일 끝에 값을 이어 씀. 만약 파일이 없으면 파일을 생성. 읽기는 파일의 모든 구간에서 가능하지만, 쓰기는 파일의 끝에서만 가능함
'x+'배타적 생성(읽기/쓰기)파일을 읽기/쓰기 모드로 생성. 파일이 이미 있으면 에러 발생
t텍스트 모드파일을 읽거나 쓸 때 개행 문자 \n과 \r\n을 서로 변환, t를 생략하면 텍스트 모드
b바이너리 모드파일의 내용을 그대로 읽고, 값을 그대로 씀

⭐⭐ 파일 메서드

메서드설명
read()파일에서 문자열을 읽음
write('문자열')파일에 문자열을 씀
readline()파일의 내용을 한 줄 읽음
readlines()파일의 내용을 한 줄씩 리스트 형태로 가져옴
writelines(문자열리스트)파일에 리스트의 문자열을 씀, 리스트의 각 문자열에는 \n을 붙여주어야 함
pickle.load(파일객체)파일에서 파이썬 객체를 읽음
pickle.dump(객체, 파일객체)파이썬 객체를 파일에 저장


함수

함수는 자주 사용하는 코드를 모아 놓은 것이다. 함수를 호출할 때 함수 안에 넣는 입력값을 인수라고 하며, 인수는 매개변수를 통해서 사용 할 수 있다.

def 함수이름(매개변수1, 매개변수2):    # 매개변수 지정
    return 반환값                      # 함수에서 값 반환
 
변수 = 함수(인수1, 인수2)    # 함수에 인수를 넣어서 호출한 뒤 함수의 반환값을 변수에 저장


⭐ 위치 인수

함수에 인수를 순서대로 넣는 방식을 위치 인수 라고 한다. 위치 인수를 사용하는 함수는 리스트(튜플) 앞에 *(애스터리스크)를 붙여서 리스트 언패킹으로 넣을 수 있다.

def 함수이름(매개변수1, 매개변수2):    # 위치 인수를 사용하는 함수
    코드
 
함수(*리스트)    # 리스트 언패킹
함수(*튜플)      # 튜플 언패킹

위치 인수를 사용하는 가변 인수 함수는 매개변수 앞에 *를 붙여서 만든다.

def 함수이름(*매개변수):    # 위치 인수를 사용하는 가변 인수 함수
    코드
 
함수(인수1, 인수2)    # 인수 여러 개를 직접 넣기
함수(*리스트)         # 리스트 언패킹
함수(*튜플)           # 튜플 언패킹

함수 기본값

함수를 만들 때 매개변수에 기본값을 지정하면 함수를 호출할 때 해당 인수를 비워두고 호출할 수 있다.

def 함수이름(매개변수=기본값):    # 매개변수에 초깃값 지정
    코드
 
함수()    # 매개변수에 초깃값이 있으므로 인수를 비워두고 호출

여러 매개 변수를 입력값으로 받는 함수의 경우에는 기본값이 지정된 입력값이 뒤 쪽에 지정되어야한다.

def 함수이름(매개변수1, 매개변수2=기본값):    # 기본 값이 있는 매개변수가 뒷 쪽에 와야함
    코드
 
함수()    # 매개변수에 초깃값이 있으므로 인수를 비워두고 호출

⭐ 재귀 함수

재귀함수란 함수 내에서 자기자신 함수를 호출하는 함수이다. 재귀함수는 반드시 종료 조건을 만들어주여야한다.

def factorial(n):   # 재귀호출로 팩토리얼을 구하는 함수
    if n == 1:      # n이 1일 때
        return 1    # 1을 반환하고 재귀호출을 끝냄
    return n * factorial(n - 1)    # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함

⭐⭐ 람다 표현식

람다 표현식은 간단한 식으로 함수를 만들 때 사용한다. 람다 표현식 자체를 호출하려면 람다 표현식을 ()괄호로 묶은 뒤 다시 ()를 붙이고 인수를 넣어서 호출한다.

lambda 매개변수1, 매개변수2: 반환값                    # 람다 표현식으로 함수를 만듦
(lambda 매개변수1, 매개변수2: 반환값)(인수1, 인수2)    # 람다 표현식 자체를 호출
 
lambda 매개변수1, 매개변수2:1 if 조건식1 else2    # 람다 표현식에서 조건부 표현식 사용
 
lambda 매개변수1, 매개변수2:1 if 조건식1 else2 if 조건식2 else3  # if를 여러 개 사용

⭐ 변수의 사용 범위

전역 변수는 스크립트 전체에서 접글 할 수 있고, 지역 변수는 해당 변수 지역 내에서만 접근 할 수 있다. 만약 함수 안에서 전역 변수를 사용하려면 global 에 변수 이름을 지정하면 된다.

x = 10    # 전역 변수
 
def A():
    global x   # 전역 변수 x를 사용하겠다고 설정
    x = x + 10  # 전역변수
    y = 10     # A의 지역 변수

함수 안에 함수를 만들었을 때 안쪽 함수에서 바깥쪽 함수의 지역 변수를 변경하려면 nonlocal 에 변수 이름을 지정한다.

def A():
    x = 10        # A의 지역 변수 x
    def B():
        nonlocal x    # 현재 함수에서 바깥쪽에 있는 지역 변수를 사용
        x = 20        # A의 지역 변수 x에 20 할당

⭐⭐ 클로저

클로저는 함수를 둘러싼 환경(지역 변수, 코드 등)을 계속 유지하다가 함수를 호추할 때 다시 꺼내서 하용하는 함수를 뜻한다. 지역 변수와 코드를 묶어서 사용하고 싶을 때 활용한다.

def A():    
    a = 10    # 지역 변수 a
    b = 20    # 지역 변수 b
    def B(x):    # A 함수 안에 B 함수를 만듦
        return a * x + b    # 함수 바깥쪽에 있는 지역 변수 a, b를 사용하여 계산
    return B          # B 함수를 반환
 
c = A()    # c에 저장된 함수가 클로저
print(c(1), c(2), c(3), c(4), c(5))    # 30 40 50 60 70

보통 클로저는 람다와 함께 사용하는 경우가 많아 둘을 혼동하기 쉬우니 둘의 개념을 잘 이해해야한다.

def A():
    a = 3
    b = 5
    return lambda x: a * x + b    # 람다 표현식을 반환
profile
🏫 𝑲𝒚𝒖𝒏𝒈 𝑯𝒆𝒆 𝑼𝒏𝒊𝒗. / 👨‍🎓 𝑪𝒐𝒍𝒍𝒆𝒈𝒆 𝒐𝒇 𝑬𝒏𝒈𝒊𝒏𝒆𝒆𝒓𝒊𝒏𝒈

0개의 댓글