パッケージの使用
モジュールとはpyファイルのことで、Pythonでモジュールを分類して管理するにはフォルダを分ける必要があります。関連する複数のモジュールを同じフォルダーに配置することができ、呼び出しの便宜上、Python のコード フォルダーは一般にパッケージと呼ばれます。
1. パッケージのインポート方法
次のパッケージ newmsg が利用可能です。このパッケージには、sendmsg.py ファイルと recvmsg.py ファイルという 2 つのモジュールがあります。パッケージの親フォルダーには test.py ファイルがあります。目的は、test.py ファイルに newmsg の 2 つのモジュールを導入することです。
ディレクトリ構造を次の図に示します。
- newmsg/
- __init__.py
- sendmsg.py
- recvmsg.py
- test.py
sendmsg.py ファイルの内容は次のとおりです。
def send_msg():
print('------sendmsg方法被调用了-------')
recvmsg.py ファイルの内容は次のとおりです。
def recv_msg():
print('-----recvmsg方法被调用了--------')
モジュールをインポートし、モジュール内のメソッドを使用するには、いくつかの方法があります。
- packagename.modulemodulename を使用して、指定したモジュールを直接インポートします。
import newmsg.sendmsg
- from xxx import xxx を使用して、指定したモジュールをインポートします。
from newmsg import sendmsg
- __init__.py ファイルを使用して、指定したモジュールをパッケージにインポートします。
newmsg で __init__.py ファイルを作成し、このファイルに指定されたコンテンツをインポートできます。
__init__.py ファイルにコードを記述します。
from . import sendmsg # 导入指定的模块 . 代表的是当前文件夹
test.py ファイル内のコードは次のとおりです。
import newmsg
newmsg.sendmsg.send_msg() # 可以直接调用对应的方法
# newmsg.recvmsg.recv_msg() 不可以使用 recvmsg 模块,因为 __init__.py文件里没有导入这个模块
- __init__.py ファイルを __all__ 属性と組み合わせて使用し、パッケージ内のすべてのモジュールをインポートします。
newmsg パッケージの __init__.py ファイルにコードを記述します。
__all__ = ["sendmsg","recvmsg"] # 指定导入的内容
test.py ファイルのコード:
from newmsg import * # 将newmsg里的__inint__.py文件里,__all__属性对应的所有模块都导入
sendmsg.send_msg()
recvmsg.recv_msg()
要約する
パッケージは、関連するモジュールをまとめて整理し、同じフォルダーに配置し、このフォルダーに __init__.py という名前のファイルを作成します。このフォルダーはパッケージと呼ばれ、モジュール名の競合の問題を効果的に回避し、アプリケーションを作成します。組織構造がより明確になります。
2. init.pyファイルの用途は何ですか?
init.py は、パッケージのインポート動作を制御します。init.py は、このパッケージをインポートする場合のみ空であり、パッケージ内のモジュールはインポートされません。コンテンツは __init__.py ファイルに書き込むことができます。
newmsg/ init.pyファイル:
print('hello world')
他のモジュールがこのパッケージをインポートすると、自動的にこのコードが呼び出されます。
3.すべて
__init__.py ファイルで、パッケージ名 import * からインポートされるモジュールを制御する __all__ 変数を定義します。
newmsg/ init.pyファイル:
__all__ = ['sendmsg','recvmsg']
予防
モジュールをカスタマイズするときは、カスタム モジュール名がシステム モジュール名と同じであってはいけないことに注意する必要があります。そうしないと問題が発生します。
先進的な事例
【Python】Pythonで単語当てゲームを実現 - 知力と運に挑戦!
[Python] Python tkinter ライブラリは重量単位変換用の GUI プログラムを実装します
[Python] Selenium を使用して (2023 Blog Star) エントリを取得します
【Python】SeleniumとChrome WebDriverを使って「Tencent Cloud Studio実践合宿」の記事情報を取得する
Tencent Cloud Cloud Studio を使用してバイドゥ AI のスケジューリングを実現し、テキスト認識を実現します
【Pythonで楽しむシリーズ【Xiaobi必見】Pythonマルチスレッドクローラー:絵文字パッケージWebサイトの画像をダウンロード
【Pythonで遊ぶシリーズ】 【小白さん必見】Pythonを使って双世丘の履歴データをクロールして視覚的に分析する
【Pythonで遊ぶシリーズ】 【Xiaobiさん必見】Pythonクローラー技術を使ってプロキシIPを取得してファイルに保存する
【シャオバイ必見】PILライブラリを使ってランク別・列別の複数画像の合成を実現するPython画像合成例
【Xiaobai必見】Pythonクローラーの実戦は女神の写真を一括ダウンロードしてローカルに保存
【Xiaobi必見】Pythonワードクラウドジェネレーターの詳細な分析とコード実装
【Xiaobai必見】NBA選手データの例をPythonでクロール
【Xiaobiさん必見】Pythonでヒマラヤ音声をクロールして保存するサンプルコード
【シャオバイ必見】Pythonを使ってリーグ・オブ・レジェンドのスキン画像を一括ダウンロードする技術的実現
【Xiaobai必見】Pythonクローラーのデータ処理と可視化
【シャオバイ必見】栄光王のヒーロースキン画像を簡単に入手できるPythonクローラープログラム
【Xiaobiさん必見】Pythonを使ってパーソナライズされたリストのWord文書を生成する
【小白必見】Pythonクローラー戦闘:陰陽師のWebサイトから写真を取得して自動保存
Xiaobai必見の図書館管理システムシリーズ - ログインおよび登録機能のサンプルコード
小白の実戦100例:小白入門に最適な完全かつシンプルな双世丘宝くじ当選判定プログラム
geopandas と Shapely (.shp) を使用した地理空間データの処理と視覚化
セレンを使用して Maoyan の映画リスト データをクロールする
画像強調アルゴリズム Retinex の原理と実装の詳細な説明
クローラー入門ガイド (8): 視覚的な分析のための気象データ クローラー プログラムを作成する
クローラー入門 (7): Selenium と BeautifulSoup を使って Douban 映画 Top250 をクロールする例解説【爬虫類の小白さん必見】
クローラー入門ガイド (6): クローラー対策と高度なスキル: IP プロキシ、ユーザー エージェント偽装、Cookie バイパス ログイン検証および検証コード識別ツール
クローラ入門(5):分散クローラと同時実行制御 【クローリング効率向上と要求合理性制御の実装方法】
クローラー入門 (4): Selenium と API を使用して動的 Web ページをクロールする最良の方法
クローラー入門ガイド (3): Python ネットワーク リクエストと一般的なクローラー対策戦略
クローラー入門 (2): データの抽出と処理に正規表現を使用する方法
画像認識における深層学習モデルの応用: CIFAR-10 データセットの実践と精度分析
Python オブジェクト指向プログラミングの基本とサンプル コード
MySQL データベース操作ガイド: Python を使用して操作を追加、削除、変更、クエリする方法を学習します。
Python ファイル操作ガイド: エンコード、読み取り、書き込み、例外処理
Python と Selenium を使ってクローリングを自動化 #【ドラゴンボートフェスティバル特別募集】テクノロジーの究極を探求せよ、未来はあなたのおかげ #寄稿記事
Python マルチスレッドおよびマルチプロセスのチュートリアル: 包括的な分析、コードケース、最適化スキル
Selenium 自動化ツールセット - 完全なガイドとチュートリアル
Python Web クローラーの基礎から実戦までのチュートリアル
Python 入門チュートリアル: for ループ、while ループ、文字列操作、ファイルの読み書き、例外処理の基礎知識をマスターします。
Pandas データ処理と分析チュートリアル: 基本から実際の戦闘まで
Python でよく使用されるデータ型と関連する操作の詳細な説明
【2023年最新】分類モデルの指標を改善する6つの主要なスキームを詳しく解説