Python 3 사용자 정의 모듈 가 져 오 는 세 가지 방법 상세 설명
최근 에 류 설 봉 의 튜 토리 얼 을 따라 모듈 이라는 절 을 배 웠 다.모듈 을 어떻게 사용자 정의 하 는 지 에 대해 모 르 시 면 기본 적 인 소 개 를 먼저 보 세 요.
모듈
컴퓨터 프로그램의 개발 과정 에서 프로그램 코드 를 많이 쓸 수록 한 파일 에서 코드 가 길 어 지고 유지 하기 가 쉽 지 않다.
유지 가능 한 코드 를 만 들 기 위해 서 우 리 는 많은 함 수 를 그룹 으로 나 누 어 각각 다른 파일 에 넣 습 니 다.그러면 모든 파일 에 포 함 된 코드 가 상대 적 으로 적 고 많은 프로 그래 밍 언어 는 이러한 조직 코드 방식 을 사용 합 니 다.Python 에서 하나의.py 파일 을 모듈(Module)이 라 고 합 니 다.
모듈 을 사용 하면 어떤 좋 은 점 이 있 습 니까?
가장 큰 장점 은 코드 의 유지 가능성 을 크게 향상 시 켰 다 는 것 이다.그 다음 에 코드 를 작성 할 때 0 부터 시작 할 필요 가 없습니다.모듈 이 완성 되면 다른 곳 에서 인용 할 수 있 습 니 다.우 리 는 프로그램 을 작성 할 때 Python 에 내 장 된 모듈 과 제3자 모듈 을 포함 한 다른 모듈 도 자주 참조 합 니 다.
모듈 을 사용 하면 함수 이름과 변수 이름 의 충돌 을 피 할 수 있 습 니 다.같은 이름 의 함수 와 변 수 는 서로 다른 모듈 에 존재 할 수 있 기 때문에 우 리 는 모듈 을 작성 할 때 이름 이 다른 모듈 과 충돌 하 는 것 을 고려 할 필요 가 없습니다.하지만 내 장 된 함수 이름과 충돌 하지 않도록 주의해 야 한다.파 이 썬 의 모든 내장 함 수 를 보 려 면 여 기 를 누 르 십시오.
다른 사람 이 만 든 모듈 이름 이 같 으 면 어 떡 하지?파 이 썬 은 모듈 이름 충돌 을 피하 기 위해 디 렉 터 리 별로 모듈 을 구성 하 는 방법 을 패키지(Package)라 고 도입 했다.
예 를 들 어 abc.py 파일 은 abc 라 는 모듈 이 고 xyz.py 파일 은 xyz 라 는 모듈 입 니 다.
이제 abc 와 xyz 라 는 두 모듈 의 이름 이 다른 모듈 과 충돌 했다 고 가정 하면 우 리 는 가방 을 통 해 모듈 을 구성 하여 충돌 을 피 할 수 있 습 니 다.방법 은 my copany 와 같은 최상 위 패키지 이름 을 선택 하여 다음 디 렉 터 리 에 저장 하 는 것 입 니 다.
mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py
가방 을 도입 한 후 맨 위 에 있 는 가방 이름 이 다른 사람과 충돌 하지 않 는 다 면 모든 모듈 은 다른 사람과 충돌 하지 않 습 니 다.현재 abc.py 모듈 의 이름 은 my copany.abc 로 바 뀌 었 습 니 다.유사 한 xyz.py 모듈 이름 은 my copany.xyz 로 바 뀌 었 습 니 다.
모든 가방 디 렉 터 리 아래 에 가 있 습 니 다.init__.py 파일,이 파일 은 반드시 존재 해 야 합 니 다.그렇지 않 으 면 Python 은 이 디 렉 터 리 를 가방 이 아 닌 일반 디 렉 터 리 로 생각 합 니 다.init__.py 는 빈 파일 일 수도 있 고 Python 코드 가 있 을 수도 있 습 니 다.왜냐하면init__.py 자체 가 모듈 이 고 모듈 이름 은 my copany 입 니 다.
유사 한 것 은 다단 계 디 렉 터 리 가 있어 다단 계 패키지 구 조 를 구성 할 수 있다.예 를 들 어 다음 과 같은 디 렉 터 리 구조:
mycompany
├─ web
│ ├─ __init__.py
│ ├─ utils.py
│ └─ www.py
├─ __init__.py
├─ abc.py
└─ xyz.py
파일 www.py 의 모듈 이름 은 my copany.web.ww 이 고 두 파일 utils.py 의 모듈 이름 은 각각 my copany.utils 와 my copany.web.utils 이다.
스스로 모듈 을 만 들 때 는 파 이 썬 이 가지 고 있 는 모듈 이름과 충돌 하지 않도록 이름 을 주의해 야 합 니 다.예 를 들 어 시스템 이 sys 모듈 을 가지 고 있 으 면 자신의 모듈 을 sys.py 라 고 명명 할 수 없습니다.그렇지 않 으 면 시스템 이 가지 고 있 는 sys 모듈 을 가 져 올 수 없습니다.
my copany.web 도 하나의 모듈 입 니 다.이 모듈 에 대응 하 는.py 파일 을 지적 해 주 십시오.
작은 매듭
모듈 은 Python 코드 의 집합 으로 다른 모듈 을 사용 할 수도 있 고 다른 모듈 에서 도 사용 할 수 있 습 니 다.
자신의 모듈 을 만 들 때 주의:
https://pypi.python.org/pypi
처음 입문 한 모든 세부 사항 을 모 르 기 때문에 인터넷 에서 자 료 를 찾 았 을 때 여러분 의 튜 토리 얼 이 너무 간소화 되 어 저 는 이 풋내기 가 힘 들 어서 조작 에 성 공 했 습 니 다.
그래서 여기 기록 해.
시작 하 다
직접 import
여기 에는 py 실행 파일 과 모듈 이 같은 디 렉 터 리(부모 디 렉 터 리)에 속 한 다 는 큰 전제 가 있 습 니 다.다음 그림:
# pwcong __init__.py
# -*- coding: utf-8 -*-
def hi():
print("hi")
실행 파일 main.py 직접 import 모듈:
# main.py
# -*- coding: utf-8 -*-
import pwcong
pwcong.hi()
이 어 main.py 를 실행 하면 명령 행 창 에서 hi 한 마디 를 출력 하고 첫 번 째 방식 으로 완성 하 는 것 을 볼 수 있 습 니 다.모듈 방식 을 사용 하면:먼저 가 져 오기->다음 에 모듈 을 입력 합 니 다.변수|함수,예 를 들 어 위의 Pwcong.hi()
두 번 째,sys 모듈 을 통 해 사용자 정의 모듈 path 가 져 오기
실행 파일 과 모듈 이 같은 디 렉 터 리 에 없 으 면 직접 import 는 사용자 정의 모듈 을 찾 을 수 없습니다.다음 그림:
sys.path.append(path)
함 수 를 통 해 사용자 정의 모듈 이 있 는 디 렉 터 리 를 가 져 옵 니 다
# main.py
# -*- coding: utf-8 -*-
import sys
sys.path.append(r"C:\Users\Pwcong\Desktop\python")
import pwcong
pwcong.hi()
마지막 으로 main.py 파일 을 실행 하고 최종 출력 hi,두 번 째 방식 으로 완성 합 니 다.세 번 째,pth 파일 을 통 해 사용자 정의 모듈 을 찾 습 니 다.
이 방법 원 리 는 시스템 변 수 를 이용 하여 python 은 path 변수의 경 로 를 스 캔 하여 모듈 을 가 져 오고 시스템 path 에 추가 할 수 있 습 니 다.그래도 pth 파일 로 추가 하 는 것 을 추천 합 니 다.
모듈 과 실행 파일 디 렉 터 리 구 조 는 위의 그림 과 같 습 니 다.
C:\Users\Pwcong\Desktop\python
이 모듈 을pwcong.pth 파일 을 여기에 놓 습 니 다:
python 설치 디 렉 터 리\Python 35\Lib\site-packages
예 를 들 어 나의:
그리고 main.py 는 사용자 정의 모듈 을 가 져 오고 사용 합 니 다.
# -*- coding: utf-8 -*-
import pwcong
pwcong.hi()
마지막 으로 main.py 파일 을 실행 하면 hi,세 번 째 방식 으로 출력 할 수 있 습 니 다.끝나다
여기까지 사용자 정의 모듈 을 가 져 오 는 세 가지 방식 으로 밤 이 완성 되 었 습 니 다.제 가 상세 하 게 썼 겠 죠?)
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Jupyter 공식 DockerHub에 대한 메모에 기재되어 있다. base-notebook minimal-notebook scipy-notebook tensorflow-notebook datascience-notebook pyspark-notebook all-s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.