목차
📌 현재 파이썬 3.0 버전에서는 대략 200개가 넘는 모듈을 지원한다.
📌 모듈을 사용하는 이유
import : 모듈을 현재 이름공간으로 가져오는 역할
math 모듈은 삼각함수, 제곱근, 로그함수 등 수학과 관련된 기능이 들어 있는 내장 모듈.
dir()
함수를 이용해 모듈에 어떠한 함수 혹은 데이터가 들어 있는지 알 수 있다.
텍스트 에디터를 이용해 교집함, 차집합, 합집합 함수를 만들어 본다.
simpleset.py 이름으로 저장하고 simpleset.py를 파이썬 라이브러리 디렉터리에 옮긴다.
import 명령을 이용해 simplest 모듈을 가지고 온다.
>>> import simpleset
합집합 구하기
>>> setA = [1, 3, 7, 10]
>>> setB = [2, 3, 4, 9]
>>> simpleset.union(setA, setB)
[1, 3, 7, 10, 2, 4, 9]
📌 모듈을 임포트 했을 때 모듈의 위치를 검색하는 경로.
모듈의 경로 밖의 모듈은 임포트 할 수 없음.
📌 모듈 안의 어트리뷰트(함수, 데이터) 들을 사용하려면 임포트를 해야 한다.
Import <모듈이름>
from <모듈> import <어트리뷰트>
>>> from sdimplset import union
>>> union([1, 2, 3], [3], [3, 4])
[1, 2, 3, 4]
from <모듈> import *
import <모듈> as <별칭>
임포트를 할 때, 해당 모듈의 바이트 코드가 있으면 이를 임포트한다.
모듈을 임포트 하면 해당 모듈의 코드가 실행된다.
모듈이 임포트되면 메모리에 모듈 코드가 로딩되면 프로그램이나 파이썬 인터프리터가 끝나기 전까지 변경되지 않는다.
📌 일종의 중간 파일
모듈의 코드가 실행 됨
처음 임포트 할 때 "print" 구문이 실행된다.
한번 메모리에 로딩된 모듈은 끝나기 전 까지 변하지 않는다.
모듈이 직접 실행 혹은 다른 곳에서 임포트 되었는지를 구분 해 줄 수 있는 __name__ 어트리뷰트
📌 모듈의 모음
📌 프로그램의 제어 흐름을 조정하기 위해 사용하는 이벤트
📌 내장 예외는 exceptions 모듈에 미리 정의
클래스 이름 | 내용 |
Exception | 모든 내장 예외의 기본 클래스 - 사용자 정의 예외를 작성시 활용 |
ArithmeticError | 수치 연산 예외의 기본 클래스 |
LookupError | 시퀀스 관련 예외의 기본 클래스 |
EnvironmentError | 파이썬 외부 에러의 기본 클래스 |
📌 try 구문
try:
<예외 발생가능성이 있는 문장>
except <예외 종류> :
<예외 처리 문장>
except(예외 1, 예외 2):
<예외 처리 문장>
except 예외 as 인자:
<예외 처리 문장>
else:
<예외가 발생하지 않은 경우, 수행할 문장>
Finally:
<예외 발생 유무에 상관없이 try블록 이후 수행할 문장>
🔔 try ~ except 예제
🔔 예외 처리 예제
🔔 예외 처리 예제
🔔 예외 처리 예제
🔔 예외 처리 예제
🔔 예외 처리 예제
try ~ finally
try:
<예외 발생 가능성이 있는 문장>
finally:
<예외와 관계없이 항상 수행되어야 할 문장>
🔔 예제
명시적으로 예외 발생
raise 구문 형식
내장 예외만으로 부족한 경우, 개발자가 직접 예외를 정의하여 사용 가능
🔔 예제
표현식
인자로 받은 조건식이 거짓 경우, AssertionError가 발생
개발과정에서 디버깅, 제약 사항 설정등으로 사용
__debug__ 가 True인 경우만 assert 구문 활성화
🔔 예제
화면으로 출력할 때는 print()
함수를 사용한다.
파이썬 버전 2.x 때는 print
가 함수가 아니었지만, 3.0 에서는 함수로 바뀌었다. 즉, 다음과 같이 함수처럼 괄호 안에 출력할 인자를 적으면 된다.
print
함수의 입력인자로 다음과 같이 구분자(sep), 끝라인(end), 출력(file)을 지정해 줄 수 있다. 아래 예제와 같이 file을 이용해서 출력을 표준오류(standard error)로 변경하거나 파일로 바꿀 수도 있다.
format()
메소드를 사용하면 문자열을 그 이상으로 자유롭게 다룰 수 가 있다.
문자열 내에서 어떤 값이 들어가길 원하는 곳은 { }
로 표시를 한다.
{ }
안의 값들은 숫자로 표현할 수 있으며, format 인자들의 인덱스를 사용한다.
아래 예제를 보면, {0}
는 첫 번쨰 인자인 "apple"
을 나타내고 {1}
은 두번쨰 인자인 "red"
를 나타낸다.
{ }
안의 값을 지정할 때는 다음과 같이 format의 인자로 키(key)와 값(value) 을 주어 위와 동일한 결과를 얻을 수 있다.
dictionary를 입력으로 받는 경우.
**
기호를 사용하면 dictionary를 입력으로 받는 것으로 판단하며, index는 생략할 수 있다.
!
기호를 사용해서 문자열 변환을 사용할 수 있다.
!s
, !r
, !a
는 각각 str()
, repr(), asci()
를 실행한 결과와 동일하다.
":"
기호를 이용하여 보다 정교하게 정렬, 폭, 부호, 공백처리, 소수점 타입 등을 지정할 수 있다.
"{0"
까지는 첫번쨰 인자인 '10'을 표시하라는 뜻이다. ":"
이후의 기로인 "$"
는 공백을 채우는 문자를 "$"
로 채우라는 의미이며, ">"
는 오른쪽 정렬을, "5"는 전체 자리수가 5자리라는 것을 나타낸다.
정렬에 사용되는 기호는 ">"
, "<"
, "^"
, "="
이 있다. <">"
는 오른쪽 기준, "<"
는 왼쪽 기준, " ^"
는 가운데 기준, "="
가 사용되면 공백문자들 앞에 부호가 표시된다. 사용되지 않으면 공백문자들 뒤, 즉 숫자 바로 앞에 부호가 표시된다.
부호를 나타내는 기호는 "+"
, "-"
, " "
가 있다. "+"
는 플러스 부호를 나타내라는 뜻이며, "-"
는 마이너스 값만 마이너스 부호를 나타내라는 것을 의미하며, " "
는 마이너스 값에는 마이너스 부호를 나타내고 플러스일 떄는 공백을 표시하라는 뜻이다.
진수를 바꿔서 출력할 수 도있다. "b"
는 이진수를, "d"
는 십진수를, "x"
는 1 6진수를, "o"
는 8진수를 나타내며 "c"
는 문자열을 출력한다.
또한 "#"
를 사용하면 #x는 16진수 #o는 8진수, #b는 2진수로 표시된다.
정수 이외에 실수에 대한 변환도 제공되며, "e"
는 지수표현을, "f"
는 일반적인 실수 표현을, "%"
는 퍼센트 표현을 의미한다.
실수에서는 다음과 같이 소수점 몇 번째 자리까지 표현할 것인지를 지정할 수 있다.
아래 예제에서는 소수점 3번째 자리까지만 출력되는 것을 확인할 수 있다.
사용자로부터 입력은 다음과 같이 input()
함수를 이용해서 받을 수 있다.
input
의 입력인자로는 화면에 출력할 프롬프트(prompt)를 줄 수 있으며, 생략 가능하며, 결과값으로는 문자열 객체를 반환한다.
📌 파일로의 입출력은 앞에서 본 바와 같이 print()
함수의 file입력인자를 이용할 수 도 있지만, 파일 입출력 제어를 보다 세밀하게 하기 위해서는 open()
함수를 통해서 파일을 연 후 파일 전용 함수들을 이용해서 작업하는 것이 일반적이다.
📌 파일로부터 읽고 쓰기 위해서 파일로부터 모든 데이터를 읽는 read()
함수와 문자열을 쓰는 write()
함수가 제공된다. 또한 파일을 열고 할 일을 모두 완료했을 경우 파일객체를 닫아주는 close()
함수가 있다.
위 예제에서 파일이 제대로 쓰였는지 읽어본 결과
📌 텍스트 모드에서는 일반 문자열과 같이 encoding이 적용되기 때문에, 바이너리 데이터(binary data) 를 다룰 때에는 오류가 발생하게 된다. 그러므로 바이너리 데이터를 다룰 때에는 반드시 바이너리 모드를 사용해야 한다.
파일 입출력 관련 함수들
readline()
함수는 호출할 때 마다 한 줄씩 읽은 문자열을 반환하며, Readlines()
함수는 파일의 모든 내용을 줄단위로 잘라서 리스트를 반환 한다.tell()
함수는 현재 파일에서 어디까지 읽고 썻는지 위치를 반환하며, seek()
함수는 사용자가 원하는 위치로 포인터를 이동한다.
With ~ as 구문
다음과 같이 리스트가 있다고 가정한다.
아래와 같이 pickle
모듈의 dump
함수를 사용하면, clolors를 다음과 같이 쉽게 파일에 저장할 수 있다.
이번에는 파일로부터 다시 읽어본다. 우선 colors를 삭제한 후 load함수를 이용해서 리스트를 읽어 들인다.
pickle로 파일에 쓰거나 읽을 떄는 반드시 바이너리 모드로 파일을 열어야 한다.
pickle로 저장할 수 있는 대상은 파이썬 객체라면 거의 모두 가능하다.
기본 자료형은 물론이고 아래 예제와 같이 사용자가 정의한 클래스 객체도 pickle이 가능한다.
[python] str 클래스/re 모듈/시간 표현/수학 모듈/데이터베이스 (0) | 2017.07.12 |
---|---|
[Python] 파이썬 C/C++ 외부 모듈 참조 (0) | 2017.07.12 |
[Python] 단축 평가/while/for/break/continue/else/class (0) | 2017.07.12 |
[Python] list/Set/tuple/딕셔너리(Dictionary)/함수 사용법 (0) | 2017.07.12 |
[Python] class/파일 입출력 (0) | 2017.07.12 |