백엔드 개발 파이썬 튜토리얼 Python의 패키지는 무엇입니까? 그것은 무엇을 합니까? Python 패키지 소개

Python의 패키지는 무엇입니까? 그것은 무엇을 합니까? Python 패키지 소개

Nov 20, 2018 pm 04:10 PM
파이썬

이 글의 내용은 파이썬에서 패키지가 무엇인지에 관한 것입니다. 그것은 무엇을 합니까? Python의 패키지 도입에는 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 패키지란 무엇인가요?

패키지는 ".module"을 통해 Python 모듈 네임스페이스를 구성하는 방법입니다. name" 방식으로 넣습니다. 우리가 넣은 각 폴더는 패키지라고 할 수 있습니다.

하지만 python2에서 지정된다는 점에 유의하세요. __init__는 package.py 파일 내에 있어야 합니다. .

패키지를 만드는 목적은 실행하는 것이 아니라 가져와서 사용하는 것입니다. 패키지는 단지 형태일 뿐이며, 패키지의 본질은 모듈입니다.#🎜 🎜##🎜 🎜#2.패키지의 역할은?

패키지의 본질은 폴더이기 때문에 폴더의 유일한 기능은 파일을 정리하는 것뿐입니다. , 불가능합니다 #🎜🎜 #

모든 기능이 폴더에 있으므로 모듈을 사용하여 기능을 정리합니다. 모듈이 많아질수록 폴더를 사용하여 정리해야 합니다

모듈 파일을 사용하여 프로그램의 구조와 유지 관리성을 향상합니다.

다음으로 나중에 학습할 수 있도록 몇 가지 패키지를 만듭니다. 패키지는 만들기 쉽고 __init__.py가 있는 폴더만 있으면 됩니다.#🎜 🎜#
import os
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
l = []
l.append(open('glance/__init__.py','w'))
l.append(open('glance/api/__init__.py','w'))
l.append(open('glance/api/policy.py','w'))
l.append(open('glance/api/versions.py','w'))
l.append(open('glance/cmd/__init__.py','w'))
l.append(open('glance/cmd/manage.py','w'))
l.append(open('glance/db/__init__.py','w'))
l.append(open('glance/db/models.py','w'))
map(lambda f:f.close() ,l)
로그인 후 복사

디렉터리 구조 만들기

각 폴더에 몇 가지 메서드를 추가합니다. #🎜🎜 #
#policy.py
def get():
    print('from policy.py')
    
#versions.py
def create_resource(conf):
    print('from version.py: ',conf)
    
#manage.py
def main():
    print('from manage.py')
    
#models.py
def register_models(engine):
    print('from models.py: ',engine)
로그인 후 복사

다음을 수행할 수 있습니다. test.py에서 패키지 내용을 사용하고, 패키지를 가져올 때 import 또는 from xxx import xxx

import glance.db.models
glance.db.models.register_models('mysql')
from glance.api.policy import get
get()
로그인 후 복사

그러나 참고하세요: from xxx import 형식에서 xxx, "점"은 가져오기 후에 나타날 수 없습니다. 즉, from a.b import c는 괜찮습니다.

But from a import b.c는 잘못되었습니다

#🎜 🎜#

3. __init__.py는 무엇을 합니까?

패키지 또는 패키지의 다른 부분을 처음으로 가져오는 경우라면 어떤 방법을 사용하여 패키지를 가져오든 상관없습니다. 패키지 부분에서는 __init__.py 파일이 먼저 실행됩니다.

이 파일은 비어 있을 수 있지만 그런 다음 이전에 사용한 xxx에서 저장할 수도 있습니다. import *를 패키지 호출에 사용할 수 있습니까?

예, 가져온 콘텐츠를 * 결정하려면 __init__.py 파일에 __all__을 제공해야 합니다.

print("我是glance的__init__.py⽂件. ")
x = 10
def hehe():
    print("我是呵呵")
    
def haha():
    print("我是哈哈")
__all__ = ['x', "hehe"]
로그인 후 복사
#🎜🎜 #test.py# 🎜🎜#
from glance import *
print(x) # OK
hehe() # OK
haha() # 报错. __all__⾥没有这个⻤东⻄
로그인 후 복사

4. 상대 가져오기 및 절대 가져오기

우리의 최종 패키지 Glance는 다른 사람들이 사용할 수 있도록 작성되었으며, 필요할 때 Glance 패키지 안에도 포함됩니다. 서로 가져오는 경우에는 절대 가져오기와 상대 가져오기의 두 가지 방법이 있습니다.

1) 절대 가져오기: 시작점으로 살펴보기

2 ). . 또는 ..을 시작점으로 사용하세요

예를 들어 ⽤glance/cmd/manage.py를 사용합니다

# 在glance/api/version.py
#绝对导⼊
from glance.cmd import manage
manage.main()
#相对导⼊
# 这种情形不可以在versions中启动程序.
# attempted relative import beyond top-level package
from ..cmd import manage
manage.main()
로그인 후 복사
#🎜🎜 #파이썬 패키지 경로를 테스트할 때 주의해야 합니다.

파이썬에서는 현재 패키지의 범위를 초과하는 프로그램을 실행할 수 없습니다(상대 가져오기).

#🎜 🎜#절대 가져오기를 사용하면 그런 문제가 없습니다. 즉, 패키지에서 상대 가져오기를 사용하면 패키지에 있는 정보를 사용할 때 패키지 외부에서만 가져올 수 있습니다

# 在policy.py
import versions
로그인 후 복사
#🎜 🎜#

우리 프로그램의 항목이 정책이라면 지금은 프로그램에 문제가 없습니다. 하지만 Glance 외부에서 정책을 가져오면 오류가 발생합니다.# 🎜🎜 #

이유는 정책이 외부에서 액세스되는 경우 .sys.path의 경로가 외부에 있으므로 버전 모듈을 사용할 수 없기 때문입니다. 따라서 오류는 확실히 보고됩니다:

ModuleNotFoundError: No module named 'versions'
로그인 후 복사

패키지를 가져올 때 오류가 발생하면 먼저 sys.path를 확인하여 확인해야 합니다. 실제로 패키지 정보를 얻을 수 있습니다.# 🎜🎜#5. 패키지를 별도로 가져옵니다

# 在test.py中
import glance
로그인 후 복사
가져온 Glance는 현재 하위 패키지를 로드하지 않기 때문에 아무것도 할 수 없습니다. __init__.py에서 __init__.py에 별도로 하위 패키지의 내용을 소개해야 하는 경우 2를 사용합니다. 절대 경로

#🎜 🎜#패키지 주의 사항: 패키지와 관련된 가져오기 문도 import 및 from xxx import xxx이지만 어느 것을 사용하든, 어디에 있든 상관 없습니다. , 가져올 때 따라야 합니다. 한 가지 원칙: 가져올 때 점이 있는 모든 항목은 점의 왼쪽이 패키지여야 합니다. 그렇지 않으면 일련의 오류가 보고될 수 있습니다. 예: from a.b.c import d

위 내용은 Python의 패키지는 무엇입니까? 그것은 무엇을 합니까? Python 패키지 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

See all articles