일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- TensorFlow
- 카카오
- numpy
- Python
- 제어문
- 후기
- AI
- AIFFEL
- 딕셔너리
- 머신러닝
- 파이썬
- 데이터사이언스 스쿨
- 코딩도장
- 사이킷런
- 파이썬코딩도장
- 데이터사이언티스트
- 자연어처리
- 재귀함수
- 기사
- 속성
- 아이펠
- NLP
- 스크랩
- 추천시스템
- 클래스
- 함수
- 제로베이스 데이터사이언스
- Set
- 데이터분석
- Today
- Total
뮤트 개발일지
[파이썬 코딩 도장] Unit 45. 모듈과 패키지 만들기 본문
모듈 만들기
모듈 안에 있는 함수 사용하기
base = 2 # 변수
def square(n): # 함수
return base ** n
square2.py 라는 이름으로 저장
방법 1)
import square2 # import로 square2 모듈을 가져옴
print(square2.base) # 모듈.변수 형식으로 모듈의 변수 사용
print(square2.square(10)) # 모듈.함수() 형식으로 모듈의 함수 사용
2
1024
방법2) from import 방식으로 모듈이름을 붙이지 않고 사용하기
>>> from square2 import base, square
>>> print(base)
2
>>> square(10)
1024
모듈 안에 있는 클래스 사용하기
class Person: # 클래스
def __init__(self, name, age, address):
self.name = name
self.age = age
self.address = address
def greeting(self):
print('안녕하세요. 저는 {0}입니다.'.format(self.name))
Person.py 라고 저장
방법 1)
import person # import로 person 모듈을 가져옴
# 모듈.클래스()로 person 모듈의 클래스 사용
maria = person.Person('마리아', 20, '서울시 서초구 반포동')
maria.greeting()
안녕하세요. 저는 마리아입니다.
방법 2) from import로 모듈명 없이 클래스 사용하기
>>> from person import Person
>>> maria = Person('마리아', 20, '서울시 서초구 반포동')
>>> maria.greeting()
안녕하세요. 저는 마리아입니다.
모듈과 시작점 알아보기
__name__: 현재 실행되는 파일의 명이 들어간다. 모듈로 불러온 것이 아닌 직접 실행하는 파일의 경우 __main__가 들어간다.
순서 살펴보기
1. hello.py라는 파일에 코드 저장
2. main.py에 hello.py import
hello.py
print('hello 모듈 시작')
print('hello.py __name__:', __name__) # __name__ 변수 출력
print('hello 모듈 끝')
main.py
import hello # hello 모듈을 가져옴
print('main.py __name__:', __name__) # __name__ 변수 출력
hello 모듈 시작
hello.py __name__: hello
hello 모듈 끝
main.py __name__: __main__
hello.py를 모듈이 아닌 직접 실행하는 경우 __name__에 __main_이 들어간다.
C:\project>python hello.py
hello 모듈 시작
hello.py __name__: __main__
hello 모듈 끝
패키지 만들기
폴더 안에 __init__.py 만들기
이 파일이 있는 폴더는 패키지로 인식한다. python3.3 이상부터는 이 파일이 없어도 패키지로 인식하지만 하위 버전에서는 인식이 안된다.
operation.py
def add(a, b):
return a + b
def mul(a, b):
return a * b
main.py에서 불러와 실행시키기
방법 1)
import calcpkg.operation # calcpkg 패키지의 operation 모듈을 가져옴
print(calcpkg.operation.add(10, 20)) # operation 모듈의 add 함수 사용
print(calcpkg.operation.mul(10, 20)) # operation 모듈의 mul 함수 사용
30
200
방법 2) from import로 패키지, 모듈 이름 없이 사용하기
- from 패키지.모듈 import 변수
- from 패키지.모듈 import 함수
- from 패키지.모듈 import 클래스
>>> from calcpkg.operation import add, mul
>>> add(10, 20)
30
>>> mul(10, 20)
200
패키지에서 from import 응용하기
import 패키지 형식으로 패키지만 가져와서 모듈 사용하기
1. __init__.py 파일에 모듈 import하기
__init__.py
from . import operation # 현재 패키지에서 operation 모듈을 가져옴
(.점은 현재 패키지라는 의미)
2. main.py 에서 실행시키기
main.py
import calcpkg # calcpkg 패키지만 가져옴
print(calcpkg.operation.add(10, 20)) # operation 모듈의 add 함수 사용
print(calcpkg.operation.mul(10, 20)) # operation 모듈의 mul 함수 사용
30
200
패키지.모듈.함수()로 사용
form import로 사용하기
main.py
from calcpkg import * # calcpkg 패키지의 모든 변수, 함수, 클래스를 가져옴
print(add(10, 20)) # operation 모듈의 add 함수 사용
print(mul(10, 20)) # operation 모듈의 mul 함수 사용
Traceback (most recent call last):
File "C:\project\main.py", line 3, in <module>
print(add(10, 20)) # operation 모듈의 add 함수 사용
NameError: name 'add' is not defined
__init__.py에서 모듈만 가져왔을 뿐 모듈 안의 함수는 가져오지 않았기 때문에 에러발생, 이 때는 __init__.py에서 모듈 안의 함수를 가져오게 해야한다.
- from .모듈 import 변수, 함수, 클래스
__init__.py
# 현재 패키지의 operation 모듈에서 각 함수를 가져옴
from .operation import add, mul
from .operation import * # 현재 패키지의 operation 모듈에서 모든 변수, 함수, 클래스를 가져옴
main.py
import calcpkg # calcpkg 패키지만 가져옴
print(calcpkg.add(10, 20)) # 패키지.함수 형식으로 operation 모듈의 add 함수 사용
print(calcpkg.mul(10, 20)) # 패키지.함수 형식으로 operation 모듈의 mul 함수 사용
30
200
__all__로 필요한 것만 공개하기
__init__.py
__all__ = ['add'] # calcpkg 패키지에서 add 함수만 공개
from .operation import * # 현재 패키지의 operation 모듈에서 모든 변수, 함수, 클래스를 가져옴
main.py
from calcpkg import * # calcpkg 패키지의 모든 변수, 함수, 클래스를 가져옴
print(add(10, 20)) # add 함수는 공개되어 있으므로 사용할 수 있음
print(mul(10, 20)) # 에러: mul 함수는 공개되어 있지 않으므로 사용할 수 없음
'코딩도장' 카테고리의 다른 글
[파이썬 코딩 도장] Unit 26. 세트 사용하기 (0) | 2022.01.05 |
---|---|
[파이썬 코딩 도장] Unit 23. 2차원 리스트 사용하기 (0) | 2022.01.05 |
[파이썬 코딩 도장] Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기 (0) | 2022.01.03 |
[파이썬 코딩 도장] Unit 34. 클래스 사용하기 (0) | 2022.01.03 |
[파이썬 코딩 도장] Unit 31. 함수에서 재귀호출 사용하기 (0) | 2021.12.30 |