ホームページ  >  記事  >  バックエンド開発  >  モジュールとは何ですか? Python のモジュールの紹介

モジュールとは何ですか? Python のモジュールの紹介

不言
不言オリジナル
2018-09-19 16:32:527833ブラウズ

この記事では、モジュールとは何かについての内容をお届けします。 Python のモジュール紹介はある程度の参考になるので、困っている方は参考にしていただければ幸いです。

1. モジュールとは

Python では、.py ファイルはモジュールと呼ばれます。
それでは、モジュールを使用する利点は何でしょうか?

(1) コードの保守性が向上します。

(2) コードを最初から作成する必要はなく、モジュールを作成した後、他の場所に適用することができます。

(3) 関数名と変数名の競合を回避できます 同じ関数名と変数を異なるモジュールに格納できますが、組み込み関数名と競合しないように注意してください。
Python のすべての組み込み関数: https://docs.python.org/3/lib...

モジュール名の競合を避けるために、Python ではディレクトリごとにモジュールの競合を防ぐ方法が導入されています。パッケージ (Python パッケージ) と呼ばれます。
ファイル abc.py は abc という名前のモジュールであり、ファイル xyz.py は xyz という名前のモジュールです。モジュール名 abc および xyz が他のモジュールと競合する場合、モジュールの競合を避けるために、別のパッケージを通じてモジュールを整理できます。
は次のとおりです:

↓ mycompany      # 按目录存放
     _init_.py   # 模块名:mycompany
     abc.py      # 模块名:mycompany.abc
     xyz.py      # 模块名:mycompany.xyz

パッケージが導入された後は、トップレベルのパッケージ名が他のモジュールと競合しない限り、すべてのモジュールが他のモジュールと競合することはありません。
各パッケージ ディレクトリには _init_.py ファイルが存在します。このファイルは存在する必要があります。存在しないと、Python はこのディレクトリをパッケージではなく通常のディレクトリとして扱います。
_init_.py 自体はモジュールであるため、

_init_.py は空のファイルにすることも、Python コードを含めることもできます。

2. Python 独自のモジュールを使用する


Python には非常に便利な組み込みモジュールが多数あり、インストールされていれば、これらのモジュールをインポートしてすぐに使用できます。輸入。

たとえば、次の小さなプログラム: 自己構築された sys モジュールを使用して hello モジュール hello.py を作成します。

# !/usr/bin/env python    # -1-
# -*-coding:utf-8 -*-     # -2- 
_author_ = 'xionglp'      # 使用_author_变量把作者写进去

import sys   

def test(): 
    args = sys.argv  
    if len(args) == 1: 
        print ('hello,world!') 
    elif len(args) ==2: 
        print('hello,%s !'% args[1]) 
    else: 
        print('too many arguments!') 
if __name__ == '__main__':
    test()
説明:

コメント# -1-: .py ファイルを unix/linux/mac で直接実行します

コメント# -2-: .py ファイルを使用します標準 UTF-8 エンコーディング


import sys: sys モジュールをインポートします。その後、sys 変数を使用して、sys モジュールのすべての関数にアクセスできます。

sys モジュールには argv 変数があり、リストを使用してコマンド ラインのすべてのパラメーターを保存します。最初の引数は常に .py ファイルの名前であるため、argv には少なくとも 1 つの要素が必要です。

hello.py ファイルがコマンド ラインで実行されると、Python インタープリターは特殊変数 __name__ を __main__ に設定します。モジュールが他の場所にインポートされた場合、if 判定は失敗します。つまり、if はこのモジュールが単独で実行された場合にのみ有効になります。したがって、この if テストにより、コマンド ラインを介して実行されるときにモジュールが追加のコードを実行できるようになり、最も一般的にはテストが実行されます。

対話型環境でモジュールをインポートします (cmd):

>>> import hello                         
>>> hello.test()                   
hello, world!
3. Python 独自のモジュールに加えて、サードパーティ モジュールをインストールして使用します。パッケージを使用して、サードパーティのモジュールをインストールすることもできます。サードパーティのパッケージのインストールは、パッケージ管理ツール pip を通じて完了します。

一般的に、サードパーティ ライブラリは Python の公式 Web サイト pypi.python.org に登録されます。したがって、サードパーティのライブラリをインストールするには、まずライブラリの名前を知る必要があります。ライブラリの名前は、公式 Web サイトまたは pypi で検索できます。たとえば、Pillow の名前は Pillow なので、Pillow をインストールするコマンドは次のようになります: pip install Pillow


ステップ 1: Python をインストールするパスで easy_install.exe を見つけます (例: D:PythonScripts

)

ステップ 2: cmd を開き、インストール コマンドを入力します: easy_install.exe pip (pip のインストールは成功します)

ステップ 3: cmd で pip を実行し、コマンドを入力します: pip installpillow

次のように:

モジュールとは何ですか? Python のモジュールの紹介インストールが成功すると、Pillow を使用できるようになります。その他の一般的に使用されるサードパーティ ライブラリには、MySQL ドライバー、科学技術コンピューティング用の NumPy ライブラリなどがあります。

pip のアップグレード:


pip を使用してインストールする場合、pip のバージョンが低すぎるためアップグレードする必要があるというメッセージが表示されることがあります。プロンプトに実行するステートメントが表示されるので、プロンプトに従ってください。

実行コマンド: python –m pip install –upgrade pip


4. モジュール検索パス

自分で書いたモジュールをインポートすることもできます。モジュールをロードしようとすると、Python は指定されたパスで対応する .py ファイルを検索します。見つからない場合は、次のようなエラーが報告されます:

モジュールとは何ですか? Python のモジュールの紹介デフォルトでは、Python インタープリターは現在のディレクトリ、インストールされているすべての組み込みモジュールおよびサードパーティ モジュールを検索します。検索パスは sys モジュールのパス変数に保存されます:

>>>import sys
>>>sys.path

自分自身を追加したい場合 ディレクトリを検索するには 2 つの方法があります:

方法 1: sys.path を直接変更し、検索するディレクトリを追加します。この方法は実行時に変更され、実行後に無効になります。実行が完了しました。

>>> import sys
>>> sys.path.append('/Users/xionglp/my_py_scripts')

法二:设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

【补充点能量】if __name__ =="__main__":

__name__:为系统变量,有两个取值。当模块是被调用执行时,取值为模块的名字;当模块是直接执行时,则该变量取值为__name__。

if __name__ == "__main__"实现的功能:可以让模块既可以导入到别的模块中用,也可以自己执行。

英文解释说:make a script both importable and executeable

例如:新建模块atest.py

# !/usr/bin/env python3
# -*- coding:utf-8 -*-
'a test module'
def addFunc(a, b):
    return a + b
print('a_test_module\'s result is ', addFunc(1, 1))

新建模块anothertest.py

# !/usr/bin/env python3
# -*- coding :utf-8 -*-
'another test module'
import  atest
print('调用another test module模块执行的结果时:',atest.addFunc(12,23))

运行:

D:\Python_project>python atest.py
a_test_module's result is  2
D:\Python_project>python anothertest.py
a_test_module's result is  2
调用another test module模块执行的结果时: 35

说明:当运行anothertest.py的时候,先运行了atest.py,再运行anothertest.py。
若不希望出现atest的内容,python提供了一个系统变量:__name__。可以把被调用的测试代码写在if语句里,当调用该module时,此时的__name__取值为该模块的名字,所以if判断为假,不执行后续代码如下:

if __name__ == '__main__':`
       print ('atest的计算结果:',addFunc(1,1))

则运行结果为:

D:\Python_project>python anothertest.py
调用another test module模块执行的结果时: 35

此时我们就得到了预期结果,不输出多余的结果。

以上がモジュールとは何ですか? Python のモジュールの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。