[데이터사이언스12기-스터디노트] 파이썬(23.02.14.)

도윤수·2023년 2월 15일
0

Python스터디노트

목록 보기
13/16
post-thumbnail

📝스터디노트 13일차 범위

중급3 복습 (모듈)

📖 모듈제작, 모듈사용

‣ 모듈은 파일자체를 함수처럼 선언하는 형식.
‣ 사용부분은 함수처럼 선언된 파일을 불러다 사용하는 형식.

# 국어, 영어, 수학 점수를 입력하면 총점, 평균을 출력하는 모듈.
scores = []

def addScore(s):
    scores.append(s)

def getScore():
    return scores

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

    return total

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

    return avg

모듈 부분이고,
1. 각 점수를 리스트로 받는 scores = []를 넣고
2. 세 과목의 점수를 입력받아 추가하는 add 부분,
3. 입력받은 점수들을 리스트로 보여주는 get 부분,
4. 총점을 구하는 getTotal부분,
5. 평균을 구하는 Avg 부분으로 나뉜다.

import scores as sc

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

sc.addScore(korScore)
sc.addScore(engScore)
sc.addScore(matScore)

print(sc.getScore())
print(sc.getTotalScore())
print(sc.getAvgScore())

모듈에서 선언했던 모든 부분들을 간단히 불러다 출력해낸다.
1. import scores로 모듈을 가져오고 as sc로 sc만 입력해서 불러올 수 있게 만들었다.
2. 각각의 점수를 입력해주고,
3. 모듈에서 선언한 함수들을 활용하여 출력한다.

보통의 언어는 메인 메소드가 먼저 시작되는데 파이썬은 그런게 없어서 main이 저장되어있는 곳으로 찾아간다. 파일은 기본적으로 실행파일은 전역변수 name에 자기의 파일명이 저장되는데 모듈은 main이 저장된다. 즉 실행파일을 찾아간다.

addModule.py
def add(n1, n2):
    return n1 + n2

if __name__ == '__main__':
    print(f'__name__: {__name__}')  # 모듈이지만 함수이므로 개인적으로 실행할 수 있으니 전역변수를 찍어볼 수 있다.

# 해당 파일에서 실행하면 본인이 실행파일이기 떄문에 __main__이 찍혀나온다.

subModule.py
def sub(n1, n2):
    return n1 - n2

print(f'__name__: {__name__}')

mulModule.py
def mul(n1, n2):
    return n1 * n2

print(f'__name__: {__name__}')

divModule.py
def div(n1, n2):
    return n1 / n2

print(f'__name__: {__name__}')

이렇게 여러 기능들을 모듈 파일로 따로 선언을 해두었을 때 각자의 파일에서 실행을 하게 되면 각자의 파일을 실행할 당시는 메인이기 때문에 print(f'name: {name}') 프린트를 해보면 main으로 나온다.

# add, sub, mul, div 의 모듈을 가져온다.
import addModule    # main일때만 모듈을 찍어내라고 해서 여기서는 add모듈은 찍히지 않는다.
import subModule    # 남이 import해서 가져온것이기 때문에 __main__ 아니라, 각자의 파일명이 저장된다
import mulModule
import divModule

def mod(n1, n2):    # 나머지를 반환해주는 기능
    return n1 % n2

if __name__ == '__main__':  #아래의 기능들은 main일때만 실행이 되게 된다.
    print(addModule.add(10, 20))
    print(subModule.sub(10, 20))
    print(mulModule.mul(10, 20))
    print(divModule.div(10, 20))

하지만, playMoudle.py라는 실행파일에서 모듈들을 불러온 후 실행을 하게 되면 각 모듈들은 본인이 실행파일이 아니라 불려온것이기 때문에 name == 각자의 파일이름 이 저장되게 된다.
이를 증명할 수 있는 것은 if name == 'main': 이것을 넣어주게 되면 각자의 파일이 메인일때만 해당 문구를 출력하라는 말인데 import된 함수들은 출력하지 않는다.

★ 어려웠던 점 ★
1. 모듈을 선언하는 파일과 실행하는 파일을 나누는 부분.
⇨ 이렇게 함수부분, 실행부분을 잘 나눌줄 알아야 효율적인 코드를 짤 수 있다는 얘기를 보았는데 아직 머릿솔에서는 한화면에 코드를 짜내야 한다는 강박(?) 같은게 있어서 구분이 안되는 것 같다. 이런 형태의 코드를 많이 보다보면 지금까지 해온것 처럼 익숙해져야할 것 같다...

🔥🔥바쁜시간 쪼개서 매일매일 성장해 나가는 모습을 기록하자🔥🔥

profile
DataScience를 하고 싶은 DoIT

0개의 댓글