Python – 모듈(Module) 및 패키지(Package)
6029 단어 Python
1. 모듈(Module)
컴퓨터 프로그램의 개발 과정에서 프로그램 코드를 많이 쓸수록 한 파일에서 코드가 점점 길어지고 유지하기가 점점 어려워진다.
유지보수 가능한 코드를 작성하기 위해 우리는 많은 함수를 그룹으로 나누어 각각 다른 파일에 넣는다. 그러면 모든 파일에 포함된 코드가 상대적으로 적고 많은 프로그래밍 언어가 이런 조직 코드를 채택한다.파이톤에서
.py
파일을 하나의 모듈(Module)이라고 부른다.모듈을 사용하면 어떤 장점이 있습니까?
가장 큰 장점은 코드의 유지보수성을 크게 높였다는 것이다.그 다음으로 코드를 작성하는 데는 0부터 시작할 필요가 없다.하나의 모듈이 완성되면 다른 곳에서 인용될 수 있다.우리는 프로그램을 작성할 때도 파이톤에 내장된 모듈과 제3자로부터 온 모듈을 포함하여 다른 모듈을 자주 인용한다.
모듈을 사용하면 함수 이름과 변수 이름이 충돌하는 것을 피할 수 있다.같은 이름의 함수와 변수는 서로 다른 모듈에 완전히 존재할 수 있기 때문에 우리가 모듈을 작성할 때 이름이 다른 모듈과 충돌하는 것을 고려할 필요가 없다.그러나 내장 함수 이름과 충돌하지 않도록 주의해야 한다.
너는 다른 사람이 쓴 모듈 이름이 같으면 어떻게 해야 할지 생각할지도 모른다.파이톤은 모듈 이름 충돌을 피하기 위해 패키지(Package)라는 카탈로그별 모듈 구성 방법을 도입했다.
예를 들어
abc.py
의 파일은 abc
이라는 모듈이고 xyz.py
의 파일은 xyz
이라는 모듈이다.현재 우리의
abc
과 xyz
두 모듈의 이름이 다른 모듈과 충돌했다고 가정하면 우리는 가방을 통해 모듈을 조직하여 충돌을 피할 수 있다.방법은 mycompany
과 같은 최상위 패키지 이름을 선택하여 다음 디렉토리에 저장합니다.mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py
가방을 도입한 후 맨 윗부분의 가방 이름이 다른 사람과 충돌하지 않는다면 모든 모듈은 다른 사람과 충돌하지 않는다.현재
abc.py
모듈의 이름은 mycompany.abc
, 비슷한 xyz.py
의 모듈 이름은 mycompany.xyz
으로 바뀌었다.모든 패키지 디렉터리 아래에
__init__.py
의 파일이 있습니다. 이 파일은 반드시 존재해야 합니다. 그렇지 않으면 파이톤은 이 디렉터리를 패키지가 아닌 일반 디렉터리로 간주합니다.__init__.py
은 빈 파일일 수도 있고 파이썬 코드가 있을 수도 있다. 왜냐하면 __init__.py
은 그 자체가 하나의 모듈이고 그 모듈 이름은 mycompany이기 때문이다.유사하게 다단계 디렉터리가 있어 다단계 패키지 구조를 구성할 수 있다.예를 들어 다음과 같은 디렉토리 구조입니다.
mycompany
├─ web
│ ├─ __init__.py
│ ├─ utils.py
│ └─ www.py
├─ __init__.py
├─ abc.py
└─ xyz.py
파일
www.py
의 모듈 이름은 mycompany.web.www
입니다.Notes: 모듈을 만들 때 이름을 주의해야 합니다. Python이 가지고 있는 모듈 이름과 충돌할 수 없습니다.예를 들어 시스템이 자체로sys모듈을 가지고 있으면 자신의 모듈을sys라고 명명할 수 없다.py, 그렇지 않으면 시스템이 자체로 가지고 있는sys 모듈을 가져올 수 없습니다.
2. 모듈 사용
파이썬 자체에 매우 유용한 모듈이 많이 내장되어 있어 설치가 끝나면 바로 사용할 수 있다.
내장된
sys
모듈의 경우 hello
모듈을 작성합니다.#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test module '
__author__ = 'Michael Liao'
import sys
def test():
args = sys.argv # argv
if len(args)==1: # 1
print('Hello, world!')
elif len(args)==2: #
print('Hello, %s!' % args[1])
else:
print('Too many arguments!')
if __name__=='__main__':
test()
첫 번째 줄과 두 번째 줄은 표준 주석이고, 첫 번째 줄의 주석은 이 Hello를 사용할 수 있다.py 파일은 Unix/Linux/Mac에서 직접 실행되며, 두 번째 줄은 주석으로 표시됩니다.py 파일 자체는 표준 UTF-8 인코딩을 사용합니다.
4행은 모듈의 문서 주석을 나타내는 문자열로 모든 모듈 코드의 첫 번째 문자열은 모듈의 문서 주석으로 간주된다.
6행은
__author__
변수를 사용하여 작가를 적는다. 그러면 원본 코드를 공개한 후에 다른 사람들이 당신의 이름을 존경할 수 있다.이상은 Python 모듈의 표준 파일 템플릿입니다. 물론 모두 삭제하고 쓰지 않을 수도 있지만 표준에 따라 일을 처리하는 것은 틀림없습니다.
뒤에서부터 진짜 코드 부분이야.
sys
모듈을 사용하는 첫 번째 단계는 이 모듈을 가져오는 것입니다.import sys
sys
모듈을 가져온 후 우리는 변수 sys
이 이 모듈을 가리키며sys라는 변수를 이용하여sys모듈의 모든 기능에 접근할 수 있다.sys
모듈에는 argv
변수가 있는데 list
으로 명령줄의 모든 파라미터를 저장했다.argv
은 최소한 하나의 원소가 있는데, 왜냐하면 첫 번째 파라미터는 영원히 이렇기 때문이다.py 파일의 이름(예:python3 hello.py
을 운행하여 얻은 sys.argv
은 ['hello.py']
입니다. 여기 python3
은 매개 변수가 아닙니다.python3 hello.py Michael
을 운행해 얻은 sys.argv
이 ['hello.py', 'Michael]
이다.마지막으로 이 두 줄 코드에 주의하십시오.
if __name__=='__main__':
test()
우리가 명령줄에서
hello
모듈 파일을 실행할 때 Python 해석기는 특수 변수 __name__
을 __main__
으로 설정하고 다른 곳에서 이 hello
모듈을 가져오면 if
판단이 실패할 것이다. 따라서 이런 if
테스트는 한 모듈이 명령줄을 통과할 때 추가 코드를 실행할 수 있다. 가장 흔히 볼 수 있는 것은 실행 테스트이다.우리는 명령줄로
hello.py
을 실행하여 효과를 볼 수 있다.$ python3 hello.py
Hello, world!
$ python hello.py Michael
Hello, Michael!
Python 상호 작용 환경을 시작하면
hello
모듈을 다시 가져옵니다.>>> import hello
>>>
가져올 때
Hello, word!
을 인쇄하지 않았습니다. test()
함수를 실행하지 않았기 때문입니다.hello.test()
을 호출하면 Hello, word!
을 인쇄할 수 있습니다.>>> hello.test()
Hello, world!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.