•Python의 읽고 쓰기
파이썬에서는 외부 파일을 가져와서 읽거나 작성한 내용을 저장하는 기능을 지원한다.
# 기본적인 파일 생성 방법은
객체명 = open("파일명.txt", 'w')
프로그램이 작동되는 구간
객체명.close()
의 형태다. 여기서 open 명령어의 열기모드만 변경해 주면 읽기와 쓰기가 가능하다.
파일 open 명령어 | 설명 |
r | 읽기 - 파일의 내용을 가져올 때 사용 |
w | 쓰기 - 작성한 내용을 파일로 만들어 저장할 때 사용 |
a | 추가 - 파일의 마지막 내용에 추가적인 내용을 저장할 때 사용 |
•모듈(Module)
모듈은 소스 코드를 재사용이 가능하게 해주는 공간으로 구분하고 관리하는 실행 단위이다.
모듈들은 하나의 물리적인 파일로 처리되며 표준 모듈, 사용자 정의 모듈, Third Party(외부) 모듈로 구분할 수 있다.
모듈은 패키지로 관리되고 모듈의 구성으로는 명령문, 전역 변수, 함수, 클래스, 모듈 등으로 이루어져 있다.
* 외부 모듈 같은 경우 유료일 수도 있다. 반대로 말하면 만들어서 팔 수도 있다는 것이다.
모듈을 사용하면 코드를 중복해서 사용하는 것을 막아줄 수 있고, 전체적인 코드의 구조를 분리하여 정리할 수 있다.
그 외에도 동일한 이름의 함수 및 변수 등을 임의의 모듈마다 설정해 놓을 수 있어서 개발자들의 가장 큰 고민 중 하나인 '이름 짓기'에 대한 부담을 줄여줄 수 있다.
# 모듈의 호출 우선순위
(1) 메모리에 기억되어 있는 모듈
(2) 현재 작성 중인 파일과 같은 위치에 있는 '.py' 파일
(3) 환경변수(PYTHONPATH)에 등록된 경로에 있는 파일
(4) 표준 모듈 목록
#모듈의 호출법
import 모듈명 - 해당 모듈명의 모듈을 가져온다.
as(alias) - 모듈의 이름을 사용자의 입맛에 맞게 별명 지정할 수 있다.
from 모듈명 import 함수명1, 함수명2, ... - 특정 모듈의 함수만 따로 불러올 수 있다.
from 모듈명 import * - 해당 모듈의 모든 함수(기능)들을 불러온다.
* 추가적으로 from을 통해 불러올 경우 모듈명을 생략하고 함수명으로 바로 사용할 수 있다.
# 모듈 관련 명령어
- 현재 자신의 PC에 있는 모듈을 확인
help("modules")
Cython conda_verify multiprocessing soupsieve IPython configparser munkres sphinx Levenshtein contextlib mypy_extensions sphinxcontrib MySQLdb contextlib2 nacl spyder OpenSSL contextvars navigator_updater spyder_kernels PIL cookiecutter nbclassic sqlalchemy PyQt5 copy nbclient sqldf __future__ copyreg nbconvert sqlite3 . . . |
해당 결과는 사용자마다 다를 수 있다.
- 설치된 모듈의 위치를 확인하는 명령어
import sqlite3
print(sqlite3.__file__)
설치된 위치도 사람마다 다를 수 있다.
# 표준 모듈
기본적으로 파이썬을 설치할 때 같이 따라오는 모듈들이다.
import sys
print(sys.path) # 현재 설정된 파일의 경로를 나열한다.
import os
print(os.getcwd()) # 마찬가지로 파일의 경로들을 표시해준다.
- 수학 관련 모듈
import math as m # m이라고 별명을 지어준다.
print("파이의 값 : ", m.pi) # 괄호가 없다는 것은 전역변수, pi는 고정값
print("30 라디안의 sin 값 : ", m.sin(30)) # 30 라디안의 sine값을 반환
print("30을 라디안에서 각도로 바꾼 경우 : ", m.degrees(30))
print(m.sin(m.degrees(30))) # 각도 30을 라디안에서 degree(도)로 변경 후 sin값 반환
# 호도법 : 라디안을 단위로 하여 각도를 나타내는 방법
# π라디안 : 180°
# 1라디안 : 180°/π, 1° = π/180°
print(m.sin(30 * (m.pi/180))) # 우리가 흔히 사용하는 sin30°의 값
이외에도 여러 math 모듈의 명령어를 찾아볼 수 있다.
https://docs.python.org/ko/3/library/math.html#trigonometric-functions
파이의 값 : 3.141592653589793 30 라디안의 sin 값 : -0.9880316240928618 30을 라디안에서 각도로 바꾼 경우 : 1718.8733853924696 -0.4097717985741408 0.49999999999999994 |
- 달력 관련 모듈
import calendar as c
# 0 : 월요일 ~ 6 : 일요일
c.setfirstweekday(6) # 달력의 시작 요일을 '일요일'로 지정
c.prmonth(2023, 3) # 3월의 달력 출력
# c.calendar(2023) # 23년도 전체 달력을 출력한다.
March 2023 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
- random 관련 모듈
print('난수 출력 --- ')
import random as r
# r.seed(2) # 매번 무작위로 나오지 않고 난수표를 이용하여 고정된 값을 출력하도록 한다.
print('[0.0 ~ 1.0) 범위 내 임의의 부동 소수점 반환 : ', r.random()) # 모듈명(모듈 또는 함수)
print('범위 내의 무작위 정수 : ', r.randint(1, 10))
print(r.randrange(1, 11)) # randrange(start, stop, step)
https://docs.python.org/ko/3/library/random.html?highlight=random#module-random
[0.0 ~ 1.0) 범위 내 임의의 부동 소수점 반환 : 0.43995387322217683 범위 내의 무작위 정수 : 3 6 |
# 사용자 모듈
사용자 모듈은 직접 사용하는 사람이 자유롭게 만들 수 있기 때문에 가능성이 매우 많다.
간단한 예시로 'study.py', 'study2.py'라는 파일을 사용해서 사용자 모듈의 예시를 들어볼 것이다.
맨 위에서 언급한 저장방법도 응용해서 실행해보자.
(study2.py)
# 단순 더하기
def addtion(*arg):
result = 0
for i in arg:
result += i
result = str(result) # 저장하기 위해 int를 str로 변형
print(result)
# 파일 저장 공간은 사용자마다 다를 수 있다.
output = open("C:/Users/Jo/OneDrive/Desktop/result.txt", 'w')
output.write(result)
output.close()
(study.py)
# 사용자 모듈
import random as r
r.seed(2) # 난수 고정
a = r.choices(range(1,31), k = 10) # 해당 범위에서 10개만 랜덤 선택
b = r.choices(range(31,51), k = 10) # 중복 허용, 싫으면 sample 사용
list_1 = list(a) # 리스트 생성
list_2 = list(b)
print(list_1, list_2) # 확인용
# 메인 모듈 확인용, 메인 모듈에서 실행된다.
def Main_check():
if __name__ == '__main__':
print('메인 모듈')
Main_check()
# study2.py를 사용자 모듈로 불러오기
import pack_other.study2 as study2 # pack_other 패키지의 study2파일을 불러온다.
# a, b로부터 3개씩 샘플을 뽑는다.
leng = len(a) # a 리스트의 길이(개수)
for i in r.sample(range(0, leng), k = 1):
# print(i) # 0 번째 당첨
p = a[i]
q = b[i]
study2.addtion(p, q) # study2의 addtion 함수를 실행.
파일 또한 바탕화면에 잘 저장된 것을 확인할 수 있었다.
[29, 29, 2, 3, 26, 23, 21, 10, 19, 19] [42, 34, 39, 38, 45, 50, 49, 41, 39, 36] 메인 모듈 71 |
•그래픽 모듈
해당 내용은 추가적인 내용으로 '이런 것도 있다' 정도로 정리해두려고 한다.
이외에도 turtle 모듈에 대해 검색해보면 별 그리기나 다양한 문양들을 그려볼 수 있다.
# 그래픽 지원 모듈
import turtle as t
a = t.Pen()
# for문을 사용해서 반복작업을 해도 된다.
a.forward(100) # 100 이동
a.right(90) # 90도 회전
a.forward(100)
a.right(90)
a.forward(100)
a.right(90)
a.forward(100)
a.right(90)
t.done()
'파이썬(Python)' 카테고리의 다른 글
파이썬 - 클래스(2) (0) | 2023.02.08 |
---|---|
파이썬 - 클래스(1) (0) | 2023.01.25 |
파이썬 - 함수 추가 내용(4)_Decorator & 재귀 함수 (0) | 2023.01.14 |
파이썬 - 함수 추가 내용(3)_일급 함수와 축약 함수(lambda) (0) | 2023.01.11 |
파이썬 - 함수 추가 내용(2) (0) | 2022.12.14 |