본문 바로가기
AI 공부/파이썬

파이썬 (모듈과 패키지, sys, os, random 모듈)

by AI Sonny 2022. 8. 8.
728x90

모듈(Module), 패키지(Package)

- 모듈: 변수, 함수, 클래스를 모아놓은 .py확장자 파일

  • .py 파일: 마크다운이나 셀같은 정보는 없고 순수한 파이썬 코드만 존재
  • .ipynb 파일: 데이터분석가(과학자)들이 파이썬 언어와 데이터로 작업하고 실험할 수 있도록 도와주는 Interactive한 개발 환경에서 실행되는 파일

 

- 모듈과 패키지의 차이점

- 패키지: 모듈의 기능을 폴더별로 정리한 개념

  • 패키지 생성: 기능별로 폴더를 정리하는 것과 비슷한 개념

 

구조는 다음과 같다.

 

# 모듈 불러오기
import <모듈명>

# 패키지에서 모듈 불러오기
from <패키지명> import <모듈명>

# 모듈 안에 함수와 클래스 불러오기
from <모듈명> import <함수 or 클래스>

# 별칭 주기
import <모듈명> as <별칭>

 


모듈 만들기

 

def do_func():
    print("저는 demo 모듈의 do_func 입니다.")

class MyClass:
    def __init__(self):
        print("저는 demo 모듈의 MyClass 입니다.")

# 스크립 모드로 실행될 때만 코드를 실행해라! 
if __name__ == "__main__" :  # 모듈명이 나오면 스크립트 방식이 아니라 출력 x
    print("저는 demo 모듈입니다.")  # __name__ 사용
    print(f"__name__변수의 값: {__name__}") # 파일명이 나옴

 

모듈은 만드는 방법은 vs code에서 파일 하나를 만들고,

 

만든 파일 안에 함수나 클래스를 넣으면 모듈이 된다. 

 

모듈은 여러 조건들을 넣을 수 있다. 

 

위 코드에서는 "__ name__"을 통해서 스크립 모드로 실행될 때만 __main__이 나오도록 할 수 있다.

 

이 것을 이용하여 if문을 통해 스크립트형 방식과 대화형 방식에 따라 조건을 걸었다.

 


패키지 불러오기

 

방법1)
import demo
demo.do_func()
demo.MyClass()

방법2)
from demo import do_func,MyClass
do_func()
MyClass()

방법3)
import demo as dm
dm.do_func()
dm.MyClass()

방법4)
from demo import *    안좋은 예시
do_func()
MyClass()

방법5)
import demo
print(__name__) # __main__ (불필요한 코드를 실행시키지 않기 위해 사용)

 

패키지를 불러오는 방법은 위와 같이 5가지의 방법이 있다.

 

그 중에서 방법 4는 패키지를 불러오는 안좋은 예시이다. 

 

왜냐하면 본인이 패키지에서 어떠한 모듈을 쓸지 모르는 상태라

 

모듈을 쓸 때 겹치는 경우가 생기기 때문이다.

 


sys, os 모듈 기능

 

sys와 os의 모듈을 사용하면 여러가지 정보를 알 수 있다.

 

기능은 다음과 같다.

 

import sys, os
# 파이썬 라이브러리가 저장되어있는 위치를 리스트로 담고있다.
# print(sys.path)

# print("exit 함수 실행 전")
# sys.exit()  # 스크립트 실행을 종료하는 함수
# print("exit 함수 실행 후")

# print(sys.version)  # 파이썬 버전 확인

# print(__file__) # 현재 파일이름 밑에 python main.py하면 상대경로로 나옴

# 현재 폴더경로 (작업폴더 기준)
# print(os.getcwd()) 

# 현재 파일의 절대 경로(파일명 포함)
# print(os.path.abspath(__file__))

# 현재 파일이 있는 폴더의 절대경로
# print(os.path.dirname(os.path.abspath(__file__)))

 

 

- cpu 개수 확인하기

 

os.cpu_count()

=> 2

 

 

- 폴더 만들기

  • 폴더가 이미 있을 경우 에러가 발생

 

os.mkdir("data")

os.mkdir("/content/data/files") # 폴더 안에 파일 생성

 

 

- 폴더 또는 파일명 변경하기

 

os.rename("data", "data2") # 기존 코드 -> 바꿀 코드명

 

 

- 폴더 삭제하기

 

os.rmdir("data2/files")

 

 

- 폴더 존재 여부 확인

 

os.path.isdir("data1"),os.path.isdir("data2") 

=> (False, True)

 

 

- 파일 존재 여부 확인

 

os.path.isfile("demo.py")

=> True

 

 

- 파일 삭제하기

 

os.remove("demo.py")

 


 

random 모듈 사용해보기

- random 함수

  • 0 ~ 1 사이에 랜덤한 실수를 반환한다.
import random

random.random()

=> 0.48771383504064114

 

 

- uniform 함수

  • 두 개의 숫자 사이의 랜덤한 실수를 반환한다.
random.uniform(1,10)

=> 8.139340557198768

 

 

- randint 함수

  • 2개의 숫자 사이의 랜덤한 정수를 반환한다.
random.randint(0,5)

=> 3

 

 

- randrange 함수

  • start,stop,step 으로 만들어지는 정수 중에 랜덤값을 반환한다.
random.randrange(1,9,2)

=> 7 # 1부터 8까지 2스탭으로 랜덤하게 추출한다.

 

 

- choice 함수

  • 시퀀스 자료형에서 랜덤하게 하나의 요소를 선택해서 반환
lst = [1,2,3,4,5,6]
random.choice(lst)

=> 2

 

 

- sample 함수

  • 시퀀스 자료형에서 랜덤하게 두번째 인수의 개수로 선택해서 반환
lst = [1,2,3,4,5,6]
random.sample(lst,2)

=> [4, 3]

 

 

- shuffle 함수

  • 요소의 순서를 랜덤하게 변경한다.
  • 원본을 변경한다.
  • iterable한 것만 들어갈 수 있다.
lst = [1,2,3,4,5,6]
random.shuffle(lst)
lst

=> [5, 4, 3, 1, 6, 2]

 

 

- seed 함수

  • 다른 컴퓨터에서도 동일값이 나온다
random.seed(42) 
lst = [1,2,3,4,5,6]
random.shuffle(lst)
lst

=> [4, 2, 3, 5, 1, 6]

 


 

이번주부터는 vscode를 사용하여 적응이 잘 안된다.

 

금방 적응하자!

728x90

댓글