** 파이썬 모듈제공
1. 수치 데이터 표현
1) 분수
-> fractions 모듈에서 fractions 클래스를 이용
-> 인스턴스 생성 : fraction('분수') 또는 fraction(분자 , 분모)
-> 덧셈 및 뺄셈 등의 사칙 연산 가능
-> __floor__() , __celi__() , __round__()
# 분수 사용을 위한 클래스 import from fractions import Fraction #클래스의 인스턴스를 어떻게 생성할지를 확인
f1 = Fraction(2,3) f2 = Fraction('3/5')
#필요한 작업 수행 - 필요한 작업이 가능한지 확인 print(dir(f1))
print(f1+f2) |
2. decimal 모듈
-> 십진수 모듈
-> decimal 모듈의 Decimal 클래스 사용
-> float 의 부정확한 연산을 보완하기 위해서 사용
-> Decimal 모듈은 숫자를 문자열로 저장하고 있다가 연산을 할 때 숫자로 변환해서 연산
c언어를 제외하고는 거의 모든 프로그래밍 언어에 이런 모듈이 존재한다.
3. Random 모듈
-> 게임분야나 데이터 분석에서 샘플링 할 때 많이 사용되는 모듈
-> 데이터 분석 또는 머신러닝을 데이터가 많은 경우 모든 데이터를 가지고 분석이나 머신러닝을 하지 않고 데이터를 샘플링 또는 테스트 셋과 확인을 위한 셋으로 분할해서 수행합니다.
-> random 은 seed 라고 하는 난수의 번호를 결정해서 그 번호에 해당하는 난수표에서 순서대로 가져옵니다.
정말 랜덤을 하고자 할 때는 seed 를 랜덤하게 만들어주어야합니다.
이 때 사용하는 방법은 seed 를 현재 시간의 값으로 설정하는 것입니다.
-> random 인스턴스를 만들지 않고 random. 함수를 호출하는 형태로 사용합니다.
seed(시드값): 시드값 설정하는 함수로 매개변수를 대입하지 않으면 현재 시간으로 설정
random(): 0.0 ~ 1.0 사이의 숫자가 리턴
randint(최소 , 최대) : 사이의 숫자를 리턴
gausee(m , sb) : 가우스 분포의 난수를 리턴
shuffle(데이터모임) : 데이터 모임을 랜덤하게 섞음
choice(데이터모임) : 1개를 추출 - 복원 추출
sample(데이터모임 , 개수) : 개수 만큼 추출 - 비복원 추출
# seed 를 설정= 매번 19라는 숫자가 먼저 리턴됩니다. random.seed(100) i=random.randint(1, 100) print(i)
import random
random.seed() numlist = [1,2,3,4,5,6,7,8,9,10]
#셔플 random.shuffle(numlist) print(numlist)
#복원 추출 print(random.choice(numlist)) print(random.choice(numlist)) print(random.choice(numlist)) print(random.choice(numlist)) print(random.choice(numlist)) #비복원추출 print(random.sample(numlist, 5 |
4. 정규 표현식
-> 문자열 패턴을 표현하는 식
-> perl 에서 처음 사용했는데 지금은 거의 모든 프로그래밍 언어에서 지원
-> 유효성 검사(데이터의 적합성 검사) 를 수행할 떄와 문자열 패턴을 찾아낼 때 많이 사용합니다.
1) 유효성 검사
-> 데이터가 설정한 패턴에 맞는지 확인
2) 유효성 검사 위치
-> 클라이언트에서 데이터를 전송하기 직전 : 속도가 빠르지만 보안이 취약
-> 서버에서 데이터를 받자 마자 : 응답속도가 느리고 비용이 발생 하지만 보안이 우수하다.
-> 데이터베이스에서 제약조건을 가지고 수행:
3) 클라이언트 프로그램은 되도록이면 작업을 수행하는 것이 좋고 서버 프로그램은 조그만한 문제가 발생하더랃고 중지하는
것이 좋습니다.
4) 파이썬에서 정규식 지원
-> re 모듈을 이용
-> match(정규식 , 데이터) : 데이터에 정규식이 포함되어 있으면 그 문자열을 리턴하고 그렇지 않으면 none을 리턴
5) 정규식은 문법 자체는 단순하지만 원하는 패턴은 쉽지 않습니다.
-> 문자열 조회나 유효성 검사를 많이 하는 경우에는 공부를 해서 사용하는 것도 좋지만 그렇지 않은 경우는 인터넷을 검색을 해서 사용하면 됩니다.
-> 이 때 주의할 점은 정규식은 자바스크립트에서 많이 사용하기 때문에 인터넷에서 검색하면 자바 스크립트 형태로 많이 되어 있습니다.
자바 스크립트 형태에서는 맨 앞과 뒤에 /가 포함된다.
파이썬에서 사용할 때 에는 /를 제거하면 됩니다.
5. 파일 시스템
1) 디렉토리 기호
-> windows: \
-> 나머지의 경우 : /
파이썬에서는 Windows에서도 /를 사용할 수 있습니다.
2) 경로 : 파일이나 디렉토리 위치
-> 절대 경로 : 루트로부터의 경로
-> 상대 경로 : 현재 위치로부터의 경로
./: 현재 디렉토리 - 생략이 가능한 경우가 있지만 Mac 이나 Linux 에서 생략하면 명령을 실행하지 않는 경우가 있기 때문에 붙여주는게 좋습니다
../: 상위 디렉토리 (부모 디렉토리)
웹프로그래밍 에서 현재 디렉토리 기준은 파일의 위치가 아니라 URL 기준입니다.
-> 상대 경로가 편하기는 하지만 되도록이면 절대 경로를 사용하는 것이 좋습니다.
3) 파일 시스템을 볼 때 중요한 함수
-> 파일의 존재여부를 확인 : os.path.exists(파일 경로)
-> 파일의 마지막 업데이트 된 시간: os.path.getmtime(파일 경로) , getctime(생성된 시간)
-> 파일의 크기 : os.path.getsize(파일 경로)
=> 클라이언트 서버 시스템을 만들 때 서버의 자원을 무작정 클라이언트에 다운로드 하게 되면 트래픽도 많이 발생하고 네트워크가 안되면 클라이언트 프로그램은 아무것도 할 수 없는 상태가 됩니다. 자주 변하지 않는 데이터가 있는 경우에는 서버에서 데이터를 전송하면 클라이언트에 저장을 하고 사용하도록 만들고 데이터가 존재하면 다운로드 하지 않도록 해주어야 하면 업데이트가 발생한 경우에는 마지막 수정 시간을 수정시간을 확인해서 일치하면 다운로드 하지 않고 일치하지 않으면 다시 다운로드 하도록 해주어야 합니다.
6. os 모듈
-> 운영체제 관련 모듈
-> getcwd() : 현재 작업 디렉토리를 문자열로 리턴
-> 디렉토리 관련된 정보를 확인할 수 있는 함수들을 제공
-> 환경 설정과 관련된 정보도 os 모듈에서 확인 가능
system(명령어) : 명령어 실행
-> getcwd 를 제외하고는 컴퓨터용 응용 프로그램 만들 때 많이 이용하는 모듈
응용 프로그램(PC , IOT) 만드는 작업을 하는 경우에는 이 모듈과 threading , network 는 많이 중요
import os
#현재 디렉토리 확인
print(os.getcwd())
#메모장 실행
os.system("notepad")
7. sys 모듈
-> 시스템 관련 모듈
-> exit(정수) : 프로그램 종료 - 클라이언트에서 사용하지만 서버에서는 사용하지 않습니다.
정수를 0을 주면 정상 종료가 됩니다.
-> path : 모듈의 참조 경로를 list 로 리턴
-> getdefaultencoding(): 현재 사용중인 인코딩
'Python' 카테고리의 다른 글
[파이썬] 메모리관리 (0) | 2021.01.30 |
---|---|
[파이썬] 쓰레드 (0) | 2021.01.30 |
[파이썬] 파이썬 정리2 (0) | 2021.01.24 |
[파이썬] 파이썬의 정리 (0) | 2021.01.23 |
[파이썬] 추상***** (0) | 2021.01.23 |