[Python] 모듈

·2023년 3월 6일
0

[Python] 제로베이스

목록 보기
8/11
post-thumbnail

✒️ 모듈 이란?

모듈이란, 이미 만들어진 훌륭한 기능으로 사용자는 쉽게 사용할 수 있다.

내부 모듈, 외부 모듈, 사용자 모듈 세 가지로 구분된다.

✍️실습

random 모듈을 이용해서 1부터 100까지의 정수 중 난수 1개를 발생시켜 보자.

import random

rNum = random.randint(1, 10)
print(f'모듈 rand 이용 : {rNum}')

📌결과
모듈 rand 이용 : 5
random 모듈을 이용해서 0부터 100까지의 난수 10개 발생
rNums = random.sample(range(101), 10)
print(rNums)

📌결과
[93, 16, 76, 75, 99, 70, 88, 17, 55, 23]

✒️ 모듈 만들기

모듈은 특정한 기능을 가지고 있는 파이썬 파일을 말한다.


#user_module.calculator.py

def add(n1, n2):
    print(f'{n1} + {n2} = {n1 + n2}')


def sub(n1, n2):
    print(f'{n1} - {n2} = {n1 - n2}')


def mul(n1, n2):
    print(f'{n1} * {n2} = {n1 * n2}')


def div(n1, n2):
    print(f'{n1} / {n2} = {n1 / n2}')

import user_module.calculator as cal #as를 이용해 별명 만들기 

cal.add(10, 20)
cal.sub(10, 20)
cal.mul(10, 20)
cal.div(10, 20)

📌결과
10 + 20 = 30
10 - 20 = -10
10 * 20 = 200
10 / 20 = 0.5

✍️실습

로또 번호 (6개) 출력하는 모듈

#user_module.lotto_make.py

def numbers():
    num = random.sample(range(1, 100), 6)
    print(f'로또 번호 : {num}')
    
-----------------------------------------    

import user_module.lotto_make as lotto

lotto.numbers()
    
    
📌결과
로또 번호 : [53, 52, 74, 69, 8, 30]
문자열 뒤집기

def getReverseStr(str):
    reverseStr = ""
    for i in range(len(str) - 1, -1, -1):
        reverseStr += str[i]
    return reverseStr
    

import user_module.reverse as reverse

print(reverse.getReverseStr("Hello"))
)

    
📌결과
olleH

import, from, as 키워드 이용

as 키워드를 이용해 모듈 이름 단축

import user_module.lotto_make as lotto
lotto.numbers()

from ~ as 키워드를 이용해 모듈의 특장 기능만 가져오기

from user_module.calculator import add
from user_module.calculator import sub
from user_module.calculator import mul, div
from user_module.calculator import *    

✍️실습

국어, 영어, 수학 점수를 입력하면 총점, 평균 출력하는 모듈
#import user_module.score 

scores = []
def addKor(kor):
    scores.append(kor)


def addEng(eng):
    scores.append(eng)


def addMath(math):
    scores.append(math)


def getTotalScore():
    total = 0
    for score in scores:
        total += score

    return total


def getAvgScore():
    avg = getTotalScore() // len(scores)
    return avg

--------------------------------------------------

import user_module.score as score

korScore = int(input('국어 점수 입력 : '))
engScore = int(input('영어 점수 입력 : '))
mathScore = int(input('수학 점수 입력 : '))

score.addKor(korScore)
score.addEng(engScore)
score.addMath(mathScore)

print(f'총점 : {score.getTotalScore()}')
print(f'평균 : {score.getAvgScore()}')



📌결과
국어 점수 입력 : 80
영어 점수 입력 : 85
수학 점수 입력 : 90
총점 : 255
평균 : 85

✒️ 실행 파일

_name_ 전역 변수

_name_에는 모듈 이름이 저장되거나 '_main_' 저장 된다.
_main_ 은 실행 파일의 이름이다.

# user_module.calculator
print(f'{__name__}')

-----------------------------

add(10, 20)
print(f'{__name__}')


📌결과
user_module.calculator
__main__

✍️실습

단위 환산 모듈을 만들고 cm을 mm, inch, m, ft로 변환해보자

#user_module.unitConversion

def cmToMM(n):
    return round(n * 10, 3)


def cmToInch(n):
    return round(n * 0.393, 3)


def cmToM(n):
    return round(n * 0.01, 3)


def cmToFt(n):
    return round(n * 0.32, 3)


if __name__ == '__main__':
    print(f'10cm : {cmToMM(10)}')
    print(f'10cm : {cmToInch(10)}')
    print(f'10cm : {cmToM(10)}')
    print(f'10cm : {cmToFt(10)}')
    

📌결과
10cm : 100
10cm : 3.93
10cm : 0.1
10cm : 3.2

--------------------------------------

# main

import user_module.unitConversion as converse

if __name__ == '__main__':
    n = int(input('숫자 입력(cm) : '))
    print(f'10cm : {converse.cmToMM(n)}')
    print(f'10cm : {converse.cmToInch(n)}')
    print(f'10cm : {converse.cmToM(n)}')
    print(f'10cm : {converse.cmToFt(n)}')


📌결과
숫자 입력(cm) : 15
10cm : 150
10cm : 5.895
10cm : 0.15
10cm : 4.8


✒️ 패키지

패키지를 이용하면 관련 있는 모듈을 그룹으로 관리할 수 있다.

#CalculatorForFloat

#addCal.py

def add(n1, n2):
    return float(n1 + n2)


if __name__ == '__main__':
    print(add(1.1, 2.2))

#divCal.py

def div(n1, n2):
    return float(n1 + n2)


if __name__ == '__main__':
    print(div(1.1, 2.2))
    
    
#mulCal.py

def mul(n1, n2):
    return float(n1 + n2)


if __name__ == '__main__':
    print(mul(1.1, 2.2))


#subCal.py

def sub(n1, n2):
    return float(n1 - n2)


if __name__ == '__main__':
    print(sub(1.1, 2.2))

---------------------------------

#CalculatorForInt

#addCal.py

def add(n1, n2):
    return int(n1 + n2)


if __name__ == '__main__':
    print(add(1.1, 2.2))

#divCal.py

def div(n1, n2):
    return int(n1 + n2)


if __name__ == '__main__':
    print(div(1.1, 2.2))
    
    
#mulCal.py

def mul(n1, n2):
    return int(n1 + n2)


if __name__ == '__main__':
    print(mul(1.1, 2.2))


#subCal.py

def sub(n1, n2):
    return int(n1 - n2)


if __name__ == '__main__':
    print(sub(1.1, 2.2)


---------------------------------


from CalculatorForFloat import addCal
from CalculatorForFloat import subCal
from CalculatorForFloat import mulCal
from CalculatorForFloat import divCal

print(addCal.add(10, 20))
print(subCal.sub(10, 20))
print(mulCal.mul(10, 20))
print(divCal.div(10, 20))

from CalculatorForInt import addCal
from CalculatorForInt import subCal
from CalculatorForInt import mulCal
from CalculatorForInt import divCal

print(addCal.add(10, 20))
print(subCal.sub(10, 20))
print(mulCal.mul(10, 20))
print(divCal.div(10, 20))


📌결과

30.0
-10.0
30.0
30.0
30
-10
30
30

site-package

site-package에 있는 모듈은 어디에서나 사용할 수 있다.

✍️실습

약수와 실수 구하는 모듈
def divisor(num):
    divisors = []
    for i in range(1, num + 1):
        if num % i == 0:
            divisors.append(i)

    return divisors


def prime(num):
    primes = []
    flag = True
    for i in range(2, num + 1):
        flag = True
        for j in range(2, num + 1):
            if i % j == 0 and i != j:
                flag = False
                break
        if flag:
            primes.append(i)

    return primes
    

자주 사용하는 모듈

수학, 난수, 시간 모듈은 코딩할 때 유용하게 사용된다.


# 수학 관련 함수

# 합
listvar = [2, 5, 6, 7, 8, 12]
print(sum(listvar))

# 최댓값
print(max(listvar))

# 최솟값
print(min(listvar))

# 거듭제곱
print(pow(13, 3))

# 반올림
print(round(3.141592, 1))
print(round(3.141592, 2))
print(round(3.141592, 3))

#math
import math

# 절대값
print(math.fabs(-10))

# 올림
print(math.ceil(5.31))
print(math.ceil(-5.31))

# 내림
print(math.floor(5.31))
print(math.floor(-5.31))

# 버림
print(math.trunc(5.31))
print(math.trunc(-5.31))

# 최대공약수
print(math.gcd(14, 21))

# 팩토리얼
print(math.factorial(10))

# 제곱근
print(math.sqrt(14))

# time

import time

lt = time.localtime()
print(lt)

print(lt.tm_year)
print(lt.tm_mon)
print(lt.tm_mday)
print(lt.tm_hour)
print(lt.tm_min)
print(lt.tm_sec)

profile
개발하고싶은사람

0개의 댓글