この記事では、Python のパッケージとは何ですか?効果は何ですか? Python でのパッケージの紹介はある程度の参考になるので、困っている友達は参考にしていただければ幸いです。
1. パッケージとは何ですか?
パッケージとは、Python モジュールの名前空間を「.モジュール名」で整理する方法です。
#ただし、python2 で指定されていることに注意してください。パッケージ内に __init__.py ファイルが存在する必要があります。
目的パッケージの作成は実行することではなく、インポートして使用することです。パッケージは単なる形式であり、パッケージの本質はモジュールです。2. パッケージの役割は何ですか?パッケージ 本質的にはフォルダーであるため、フォルダーの唯一の機能はファイルを整理することです。関数が増えるにつれて、#すべての関数を 1 つのフォルダーに入れることはできなくなります。モジュールを組織機能に使用します。モジュールが増えるにつれて、プログラムの構造と保守性を向上させるために、フォルダーを使用してモジュール ファイルを整理する必要があります。
次へ 後で学習するためにいくつかのパッケージを作成します。パッケージは簡単です。必要なのは __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 を使用できます。インポートの形式 xxx
import glance.db.models glance.db.models.register_models('mysql') from glance.api.policy import get get()
3 __init__.py は何をしますか?
パッケージのインポートにどの方法を使用しても、それが初めてインポートされる限り、パッケージまたはパッケージの他の部分が最初にインポートされます。 __init__.py ファイルを実行します。このファイルは空でも構いませんが、初期化コードを保存することもできます。
以前に使用した Can from xxx import * be used in package call?はい、__init__.py ファイルに __all__ を指定して * インポートされたコンテンツを決定する必要があります。print("我是glance的__init__.py⽂件. ") x = 10 def hehe(): print("我是呵呵") def haha(): print("我是哈哈") __all__ = ['x', "hehe"]
from glance import * print(x) # OK hehe() # OK haha() # 报错. __all__⾥没有这个⻤东⻄
# 在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
理由は、ポリシー設定時に外部からアクセスするとエラーが発生するためです。 , .sys.path のパスが外部にあるため、versions モジュールを直接見つけることができません。したがって、必ずエラーが報告されます:
ModuleNotFoundError: No module named 'versions'
# 在test.py中 import glance
以上がPythonのパッケージとは何ですか?効果は何ですか? Python のパッケージの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。