ホーム 戻る
抱けば君のなかに菜の花灯りけり 河原枇杷男 松の花かくれてきみと暮らす夢 渡辺白泉 次の世は茄子でもよし君と逢わん 折笠美秋
20131015改訂中 第14章 モジュールとパッケージ
モジュール:定義した関数を再利用したい場合、その関数を切り出して、別のファイルに整理。他 のスクリプトからその関数を呼び出して利用する。このファイルに整理したものがモジ
ュール。標準ライブラリにモジュールが収められている。モジュールは内部に定義した
関数や変数を外部から利用するもの。(上平哲・即効パイソン・秀和システムp159) モジュール:プログラムのコードやデータの集合のこと:最上位の構成単位:プログラムのファイル: 名前が.py拡張子で終わるpythonのプログラムファイルはすべてモジュール・ pythonプログラムで利用できる「名前」(名前空間)という側面もある。 モジュール:一度入力したコードを保存して何度でも利用できるようにするためにコードを ファイルに記述する。コードを記述したファイルをモジュールという。 モジュール:oopの抽象概念:imprtして使用するメソッドの集まり。 モジュール:pythonは言語の中心部分を小さくし、残りの機能をモジュールとして提供する。 モジュール:スクリプトをpyという拡張子のついたファイルに保存するだけ。 作成したモジュールはimportを利用して、別の名前空間で利用する。 fromを使い、モジュールから特定の変数や関数を取り出すことができる。 モジュールのimportは基本的に一度しか行われない。 モジュール:関数や変数やオブジェクトの定義を書いたファイル。ファイルはテキストファイルとして .pyという拡張子を付けて保存する。.何も書いてないテキストファイルに.py拡張子を付
けて 保存すれば最小のモジュールになる。 プログラムとモジュール:プログラムは実行のために作られる。モジュールはプログラムからインポ ートされ、使われるために作られている。
名前:属性とも呼ばれる。:特定のモジュール(オブジェクト)に属する変数の 名前 import:モジュール全体をインポートするための文:起動方法の一種:他の ファイルをロードしそのファイルにアクセスする権限を得る操作: モジュール:プログラムで利用する関数のような部品を、利用目的によって 分類する仕組み。 標準ライブラリー:pythonに標準で組み込まれているモジュールやパッケ ージ。高度、複雑な処理を手軽に利用できる。 自作モジュール;自分で作った関数などをまとめておくことができる。
モジュールをimportする
>>> import math >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'math']
>>> from math import sin,radians >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'math', 'radians', 'sin'] >>> import math >>> sine = math.sin >>> radians = math.radians >>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'math', 'radians', 'sin', 'sine'] >>> sin(90)
0.89399666360055785 >>> math.sin(90)
0.89399666360055785
>>> sine(90)
0.89399666360055785
組み込みモジュールを使う
timeモジュール:日付文字列を扱う >>> def time(b): import time time.sleep(b) <与えられた秒数だけ処理を停止する print('b')
>>> time(5)
b
ntモジュール:os依存の情報 python起動直後作られる
>>> import nt >>> nt.environ
{'TMP': 'C:\\DOCUME~1\\WS13\\LOCALS~1\\Temp', 'COMPUTERNAME': 'NEWDESKTOP', 'USERDOMAIN': 'NEWDESKTOP', 'SystemDrive': 'C:', 'PROCESSOR_IDENTIFIER': 'x86 Family 15 Model 2 Stepping 9, GenuineIntel', 'PROCESSOR_REVISION': '0209', 'SystemRoot': 'C:\\WINDOWS', 'HOME': 'C:\\Documents and Settings\\WS13', 'HOMEDRIVE': 'C:', 'TK_LIBRARY': 'C:\\Python30 \\tcl\\tk8.5', 'TEMP': 'C:\\Documents and Settings\\WS13\\Local Settings\\Temp:c\\IronPython-1.1', 'PROCESSOR_ARCHITECTURE': 'x86', 'TIX_LIBRARY': 'C:\\Python30\\tcl\\tix8.4', 'ALLUSERSPROFILE': 'C:\\Documents and Settings\\All Users', 'SESSIONNAME': 'Console', 'HOMEPATH': '\\Documents and Settings\\WS13', 'Path': 'C:\\Program Files\\Common Files\\Pervasive Software Shared\\pvswcore;C:\\PROGRA~1\\JUSTSY~1 \\JSLIB32;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32 \\Wbem;C:\\Program Files\\PC-Doctor for Windows\\services;C:\\Program Files\\Common Files\\MDL Shared\\ISIS;C:\\Program Files\\JDL\\system\\object;C:\\Program Files\\JDL\\system\\dll;C:\\Program Files\\Common Files\\InterSystems\\Cache;C:\\PROGRA~1\\Borland\\Delphi6 \\Bin;C:\\PROGRA~1\\Borland\\Delphi6\\Projects\\Bpl;c:\\Program Files\\Microsoft SQL Server\\90\\Tools\\binn\\', 'USERNAME': 'WS13', 'LOGONSERVER': '\\\\NEWDESKTOP', 'windir': 'C:\\WINDOWS', 'TCL_LIBRARY': 'C:\\Python30\\tcl\\tcl8.5', 'ProgramFiles': 'C:\\Program Files', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH', 'CLIENTNAME': 'Console', 'FP_NO_HOST_CHECK': 'NO', 'ComSpec': 'C:\\WINDOWS\\system32\\cmd.exe', 'APPDATA': 'C:\\Documents and Settings\\WS13\\Application Data', 'NUMBER_OF_PROCESSORS': '1', 'CommonProgramFiles': 'C:\\Program Files\\Common Files', 'PROCESSOR_LEVEL': '15', 'OS': 'Windows_NT', 'USERPROFILE': 'C:\\Documents and Settings\\WS13'} >>> nt.getcwd() < 現在の作業フォルダ(カレントワーキングディレクトリ)を「返す
'C:\\Python30'
>>> nt.listdir('C:\\Python30') #指定したフォルダに存在するフォルダ名やファイル名をリストで取得 ['accountclas.py', 'ask.py', 'class20.py', 'class4.py', 'c同族会社.py', 'data.txt', 'data1.py', 'data2.py', 'DLLs', 'Doc', 'elif1.py', 'fact.py', 'fact2.py', 'FirstClass.py', 'for1.py', 'for2.py', 'for3.py', 'for4().py', 'for5.py', 'for6.py', 'haifu.py', 'if1.py', 'if10.py', 'if11.py', 'if2().py', 'if2.py', 'if3.py', 'if4.py', 'if7.py', 'include', 'kaneko.py', 'Lib', 'libs', 'LICENSE.txt', 'myclass.py', 'NEWS.txt', 'pyintro.py', 'python.exe', 'pythonw.exe', 'README.txt', 'recur.py', 'SecondClass.py', 'ss.py', 't.py', 'tcl', 'Tools', 'w9xpopen.exe', 'while1.py', 'while10.py', 'while11.py', 'みなし譲渡.py', 'カレンダー', 'クラス1.py', 'クラス2', 'クラス2.py', 'コメント.py', 'ディク応用1.py', 'リスト割り算.py', 'リスト計算集計.py', 'ループ', '三角形.クラスpy', '事業要件.py', '人口.py', '個物2.py', '偶数.py', '公的年金.py', '再帰2.py', '利子.py', '同族会社1.py', '同族判定.py', '同族1.py', '国内取引.py', '好物.py', '好物.2py', '存在.py', '存在確認.py', '寄付金.py', '対価要件.py', '平均.py', '年調データ.py', '年調給与額.py', '年齢.py', '役員退職金,.py', '役員退職金.py', '扶養控除額.py', '指数.py', '改行.py', '数値・変数.py', '数1.py', '文字列2.py', '日時差.py', '時価.py', '書式.py', '最大公約数.py', '月.py', '消費税課税対象.py', '生保1.py', '生徒.py', '科目.py', '科目2.py', '給与所得控除後.py', '給与調整.py', '評価.py', '課税対象.py', '財務1.py', '資産譲渡.py', '配偶者控除額.py', '配当所得.py', '重量.py', '長期譲渡.py', '障害・寡婦夫・勤学控除額.py', '電話帳.py', '電話番号.py', '65以上公年.py', 'c同族会社.py']
mathモジュール:数学関係
>>> math.pi < 円周率 3.1415926535897931 >>> math.e < 定数e 2.7182818284590451 >>> math.pow(5,6) < 累乗 15625.0 >>> math.sqrt(345) < 平方根 18.574175621006709 >>> math.radians(90) < 度をラジアンに 1.5707963267948966 >>> math.degrees(math.radians(90)) <ラジアンを度に 90.0 >>> math.exp(3) < eのx乗 20.085536923187668 >>> math.e**3 20.085536923187664 >>> math.log10(100 * 100 * 10) <10を底にした対数 5.0
(1)モジュールを作る。importする。属性にアクセスする。
title = "my real life"
mydoc1.pyとして保存する。
モジュールのロード 。 >>> import mydoc1
モジュールの属性にアクセス >>> mydoc1.title 'my real life' from:モジュールの特定の「名前」(名前空間)だけをインポートする文:インポート対象のファイル の中のどの属性にアクセスするか指定できる。モジュール属性がコピーされると、その後は普 通の変数のように利用できる。from モジュール名 import 属性1 、属性2、・・・
>>> from mydoc1 import title >>> title 'my real life' < 普通の変数のように利用
(2)さらにモジュールについて
モジュール:クラスは実体(データ)と振舞い(処理)を持った「もの」を処理する。 モジュール:処理の部分だけをまとめるもの。 モジュールはインスタンスを持つことができない。 モジュールは継承できない。 モジュールの提供するメソッドは「モジュール名。メソッド名」という形式で参照。 モジュールの使い方:名前空間の提供 モジュールを作る:定数、メソッドの定義、
標準モジュールのインポート 標準モジュールはどこからでもインポートできる。
mathモジュール
>>> import math < モジュールは名前がついたオブジ ェクト:インポートする >>> 10 * 20 * math.sin(math.radians(45)) / 2 < モジュールは変数のように使う 70.710678118654741 fromを使う。
>>> from math import sin ,radians < モジュール名mathを省略 >>> 10 * 20 * sin(radians(45)) / 2 70.710678118654741
datetimeモジュール
ある日とある日の間の日数を求める
>>> import datetime < モジュールを使う >>> a = datetime.datetime(2008,4,29) >>> b = datetime.datetime(2007,1,31)
>>> a - b datetime.timedelta(454) <実行結果
今日の日付けを求める
>>> import datetime < モジュールを使う
>>> datetime.datetime.today() datetime.datetime(2008, 8, 15, 17, 18, 15, 984000) < 実行結果
曜日を求める >>> import datetime >>> a = datetime.datetime(2007,1,1) >>> a datetime.datetime(2007, 1, 1, 0, 0) >>> a.weekday() 0 < 実行結果月曜 月曜0・・・6日曜
(3)モジュールのまとめ
標準ライブラリー:モジュール:プログラムで使う関数のような部品を利用目的によって 分類する仕組み(サブルーチン・プロシージャー) プログラミングの4ッ目の基本制御構造(順次実行、 ループ、分岐に続く)組み込みモジュールを使う。 自分の作ったモジュ ールを組み込む。
import文を使いモジュールを読み込む 標準モジュールmathをinportして高度な演算を行う。
>>> import math >>> 10 * 20 * math.sin(math.radians(45)) / 2 70.710678118654741
pythonの標準モジュール
sys os string math times
自作モジュール:自分で作った関数をほかのプログラムのなかで使う方法がモジュール pythonの文を記述したテキストファイルがそのままモジュール
基本的な関数は組み込みライブラリー が提供している。 自分で関数を書き起こす前にドキュメントを調べる。 モジュールが正しくインポートされるためには、そのモジュールがモジュール検索パスにふくまれて い なくてはならない。
>>> import sys >>> sys.path # モジュール検索パスのリスト ['C:\\Python30\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python30.zip', 'C:\\Python30 \\DLLs', 'C:\\Python30\\lib', 'C:\\Python30\\lib\\plat-win', 'C:\\Python30', 'C:\\Python30 \\lib\\site-packages']
パッケージ 複数のモジュールを含んだディレクトリ。
モジュールがファイル単位で構成されるのに対し、パッケージはディレクトリ単位で構成される。名前に階層構 造 を作る。モジュールの数が増える場合。 ディレクトリの中に__int__pyというファイルを配置する。 パッケージはモジュールと同じように利用できる。 パッケージ名はパッケージのトップレベルのディレクトリ名と同じ。 一番簡単なパッケージを作る。 パッケージをインポートする。
知は外から情報として告げ知らされはしない。むしろ内部に向けて、無限の否定を反復することによって、しだ いに近接していくべきものだ。 (対話という思想 プラトンの方法序説・内山勝利著。岩波書店) ホーム 戻る
|