モジュール
定義:モジュールがPYファイルです。このモジュールは、集約関数に似て似たような機能の多くを保存します。
モジュールカテゴリ:
- 内蔵モジュール
- サードパーティ製のモジュール
- カスタムモジュール
インポート
- インポートインポートの意味します
三つの実現への最初のモジュール
- メモリにファイルをロードするTbjx.py。
- メモリ内の名前の名前空間を作成するTbjx。
- らは、名前tbjx名前空間によってモジュール(等変数と関数名、クラス名)の名前を参照します
これは、別のモジュールの名前空間に導入され、
坑:通过tbjx.的方式引用此模块的名字时,一定一定是从此模块中寻找. 通过import 引用模块 他有自己的独立名称空间,与当前执行文件没有关系. name = '李业' print(tbjx.name) def read1(): print('in 02 模块import') tbjx.read1()
モジュールの別名ので、
利点は、モジュール名が使いやすい、非常に短い変わっ非常に長くなることができます。
import tbjx as t t.read1()
これは、コードの拡大と最適化を助長しています。
#mysql.py def sqlparse(): print('from mysql sqlparse') #oracle.py def sqlparse(): print('from oracle sqlparse') #test.py db_type=input('>>: ') if db_type == 'mysql': import mysql as db elif db_type == 'oracle': import oracle as db db.sqlparse()
複数のモジュールを導入
一つのファイルでは、複数のモジュールをインポートし、推奨される文言はインポートです。
import os,sys,json # 这样写可以但是不推荐 推荐写法 import os import sys import json
二、から...インポート...
...輸入使用して...
from ... import ... 的使用示例。 from tbjx import name, read1 print(name) read1() ''' 执行结果: from the tbjx.py 太白金星 tbjx模块: 太白金星 '''
インポートと比較して...から...インポート
唯一の違いは、次のとおりです。tbjx:から...インポートスパムの使用...直接現在の名前空間に名前に吸い込まれ、その現在の名前空間は、接頭辞を追加することなく、それに名前を使用します。
インポート...道から...私たちは長所と短所を持っています
利点:使いやすいです
短所:簡単に現在実行中のファイル名と競合
例は示しています。
実行可能ファイルの変数や関数名と同じ名前のモジュールは、カバレッジがあるでしょう。
name = 'oldboy' from tbjx import name, read1, read2 print(name) ''' 执行结果: 太白金星 ''' ---------------------------------------- from tbjx import name, read1, read2 name = 'oldboy' print(name) ''' 执行结果: oldboy ''' ---------------------------------------- def read1(): print(666) from tbjx import name, read1, read2 read1() ''' 执行结果: tbjx模块: 太白金星 ''' ---------------------------------------- from tbjx import name, read1, read2 def read1(): print(666) read1() ''' 执行结果: tbjx模块: 666 '''
現在の場所に直接READ1とREAD2のような、実行、まだtbjx.pyグローバルネームスペースファイル
#测试一:导入的函数read1,执行时仍然回到tbjx.py中寻找全局变量 'alex' #test.py from tbjx import read1 name = 'alex' read1() ''' 执行结果: from the spam.py spam->read1->name = '太白金星' ''' #测试二:导入的函数read2,执行时需要调用read1(),仍然回到tbjx.py中找read1() #test.py from tbjx import read2 def read1(): print('==========') read2() ''' 执行结果: from the tbjx.py tbjx->read2 calling read tbjx->read1->tbjx 'barry' ''' 4.3.3 也支持as 通过这种方式引用模块也可以对模块进行改名。 from tbjx import read1 as read read()
ラインの複数の導入
from tbjx import read1,read2,name
...インポート*
名前の先頭にすべてtbjxないアンダースコア(_)での迷惑メールのインポート*から現在の位置にインポートされます
*インポートする何名かわからないので、ほとんどの場合、当社のpythonプログラムは、この方法をインポートするために使用すべきではない、名前が定義されている前に上書きされる可能性があります。インタラクティブな環境にインポートする際に、非常に貧しい可読性が、問題はありません。
あなたは使用することができ、すべての tbjx.pyに(新しいバージョンをリリースするために使用される)のコントロール*、新しい行を
__all__=['money','read1'] #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字
第三に、二つの機能PYファイル
:良いのpythonファイルを書くことは、二つの目的があり
:(などこのようなシミュレーションなど、あなたがそのブログのログインの庭の仕事を書く前に、)実行するスクリプト、ファイル全体のプログラムですが、
II:山に保存されているモジュール、ファイル使用して、インポートする機能、私たちのためのpythonは、グローバル変数__name__、構築されたファイルをスクリプトとして実行されます。名前「と等しい主な」ファイルをモジュールとしてインポートされている場合:__モジュール名に等しいname__ #機能:へ異なるアプリケーションシナリオでの.pyファイルの実行制御、異なる論理(又はテストコード・モジュール・ファイル)if __name__ == '__main__':![img]
print('from the tbjx.py') __all__ = ['name', 'read1',] name = '太白金星' def read1(): print('tbjx模块:',name) def read2(): print('tbjx模块') read1() def change(): global name name = 'barry' if __name__ == '__main__': # 在模块文件中测试read1()函数 # 此模块被导入时 __name__ == tbjx 所以不执行 read1()
第四に、モジュール検索パス
モジュールパスを探します。メモリ---->内蔵モジュール--->のsys.pathで探して
限り、これら三つの場所のように:のsys.path内蔵メモリモジュールは、モジュール参照パスで見つけることができ、このモジュールへの直接参照でなければなりません
手動で他のモジュールを参照するようにパスを追加
sys.path.append(r'D:\ S23 \ day15' )