본문 바로가기
Python

Python Scripts and Modules (Part 1)

by Shuaaaa 2024. 4. 28.

AWS API를 활용하여 기술적으로 확인해봐야할때, 파이선을 사용하여 AWS SDK (boto3)를 Import하여 스크립트를 작성하여 진행하는게 굉장히 일반적이고 흔합니다.

 

저는 Biology & Computer Science를 전공한 사람으로서, 프로그래밍은 많이 해봤지만 스크립트 위주로 Biological Data를 처리하는데 Computer Science를 활용했었기 때문에, 일반적인 개발이 아닌 스크립트 작성을 많이 했었죠. 

 

하지만 본격적으로 AWS를 하면서 AWS SDK를 활용한 저만의 라이브러리를 꾸준히 커밋하고자 하는 목표가 생겼고, 그 목표를 위해 코딩을 배우는것보다, Python의 구조와 모듈, 클래스, 객체 구성의 이해가 좀 더 필요한 상황이라고 생각이 들었습니다.

워낙 좋은 교본을 찾아서, 최소한의 정리만 저는 작성하도록 하겠습니다.

 

스크립트(Script) 예시 

add.py

2+3

 

python3 add.py
5

 

모듈(Module) 예시

add.py

def add(a,b):
	print(a+b)

 

python3 add.py
  • 모듈 이름 = filename에서 .py 제외
  • 위와같이 실행했을 때는, 아무것도 일어나지 않음
  • def와 같이 모듈을 정의했을 때, python의 스크립트의 기능은 더이상 발현되지 않음
  • 모듈을 만들었는데, 어쨌든 실행이 가능한 스크립트 기능을 유지하고 싶다면?
    if __name__ = "__main__":

 

모듈(Module) Import 함수 / 변수

calc.py

# 만약 calc.py에서 add.py의 add 함수를 사용하고 싶다면,
import add
add.add(2,3)

 

python3 calc.py
5
  • import 모듈명 (모듈명 = python 파일명에서 .py 제외)
    -> 모듈명.함수명 으로 작성해야함
    -> add.add
  • from 모듈명 import 함수명
    -> 함수명으로 작성 가능
    -> add 
  • import 모듈명A as 모듈명B (import add as addB)
    -> 모듈명B.함수명 으로 작성
    -> addB.add

 

if __name__ ==  "__main__": 역할

add.py

def add(a,b):
	print(a+b)
    
def main():
	add(2,3)
    
if __name__ == "__main__":
	main()

 

python3 add.py
5
  • 모든 모듈은 __name__ = "__(module name)__" 을 부여받게됨
    이번 예시로는, __name__ = "add"
  • 하지만, 모듈을 스크립트처럼 실행하게 되면, __name__ = "__main__"으로 설정됨

name_test.py

print(__name__)

 

python3 name_test.py
"__main__"

 

>>> import name_test
>>> "name_test"
  • 위와 같이, name_test.py를 스크립트처럼 run 했을때는 __name__ = "__main__"
  • name_test를 모듈처럼 import 했을때는 __name__ = "name_test"

 

 

참고 문서

https://carpentries-incubator.github.io/python_packaging/01-scripts-and-modules.html

 

Python Packaging: Python Scripts and Modules

Python Scripts and Modules Last updated on 2024-04-16 | Edit this page Expand All Solutions Questions What is a ‘module’ in Python? How does this differ from a ‘script’? What are the benefits of modularising our Python code? Objectives Introduce th

carpentries-incubator.github.io

 

 

댓글