メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年3月8日土曜日

[Apache][CodeReading] Apache2.2.8コードリーディング -- 一時休止

デスマーチ中につき、一時休止。
隙をみて読む予定・・・・。



.

2008年3月7日金曜日

[その他][本] ドラゴンブック、思わず買っちゃった。


某本屋にいったら、Amazonでは新品で買えない(?)ドラゴンブックが売っていたんで、
思わず買っちゃった。


買ってから思ったんだけど、ドラゴンブックってこれで良いのかしら??
ドラゴンが画面から顔をのぞいているやつもあるんだけど・・・。

とりあえず、イントロダクションだけ読んだ。
うーむ。面白そー。内容は古いらしいが。

[Python][お勉強] 「Pythonチュートリアル」を読む(20) -- 読破

「Pythonチュートリアル」を読み終えた。

「初めてのPython」よりは面白かった気がする。


次は「Pythonクックブック」に突入予定。
これはさらっと目を通す感じ。多分使うときに見れば良さそうなんで。


.

[Python][お勉強] 「Pythonチュートリアル」を読む(19) -- ラスト

12章突入。

更なる学習の参考。

「Python Library Reference」
標準ライブラリ、関数についての簡潔で完全なリファレンス。
目を通すべき。

「Installing Python Modules」
外部モジュールをインストールする方法の解説。

「Language Reference」
構文、書式についての詳細な解説が書かれている。

「Python Cookbook」
コード例、モジュール、スクリプトの巨大コレクション。

その他Web上のドキュメントたち

いろいろ。


おしまい。
.

[Python][お勉強] 「Pythonチュートリアル」を読む(18) -- 標準ライブラリ v2

今日もPython。
アウトプット。


reprモジュール
別バージョンのreprが使える。


>>> import repr
['Repr', '__all__', '__builtin__', '__builtins__', '__doc__', '__file__', '__name__',
'aRepr', 'islice', 'repr']
>>>
 

repr、islice、aRepr等。


pprintモジュール

表示をより洗練された形で制御できるようになるらしい。
Pythonのデータ構造をインタープ リタへの入力で使われる形式にして表示できる。


textwrapモジュール
テキスト幅を画面幅に収まるように整形する。

localeモジュール
文化固有のデータフォーマットデータベースにアクセスする。

stringモジュールのテンプレート
stringモジュールのTemplateクラスを使用するとプレースフォルダが使える。

structモジュール
バイナリデータを処理する関数を提供する。
pack()とunpack()など。

>>> import struct
>>> dir(struct)
['__doc__', '__file__', '__name__', 'calcsize', 'error', 'pack', 'unpack']
>>>
 

へぇ。

threadingモジュール
マルチスレッドしたいときに使える。
Queueモジュールと一緒につかうとうれしいかも、と書いてある。

loggingモジュール
機能万全かつ柔軟なログ記録システム。
logger。

weakrefモジュール
弱参照。
gcの対象となる「参照」は持ちたくないが、利用するための「参照」は持ちたい、
というときに使える。

arrayモジュール
リスト類似のオブジェクトを提供する。
通常のリストでは「整数」を格納するのに、1要素あたり4バイト必要。
arrayモジュールは、たとえば1要素2バイトにしたい場合などに使用できる。

collectionsモジュール
リスト類似のオブジェクトを提供する。
append、popはリストよりも高速。内部検索は鈍速。

bisectモジュール
ソート済みリストに対する操作群。

heapqモジュール
リストをベースにヒープを実装する関数群。

decimalモジュール
データ型Decimalを提供する。
これは浮動小数点10進数を計算するのに使える。
decimalモジュールを使用すれば必要な精度で計算できる。



おしまい。
.

2008年3月6日木曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(17) -- 標準ライブラリ

今日もPythonお勉強。

10章突入。

osモジュール
OSとやりとりする関数群を提供するモジュール。


>>> dir(os)
['EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST',
'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE',
'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE',
'EX_USAGE', 'F_OK', 'NGROUPS_MAX', 'O_APPEND', 'O_CREAT', 'O_DIRECT',
'O_DIRECTORY', 'O_DSYNC', 'O_EXCL', 'O_LARGEFILE', 'O_NDELAY', 'O_NOCTTY',
'O_NOFOLLOW', 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_RSYNC', 'O_SYNC',
'O_TRUNC', 'O_WRONLY', 'P_NOWAIT', 'P_NOWAITO', 'P_WAIT', 'R_OK', 'TMP_MAX',
'UserDict', 'WCONTINUED', 'WCOREDUMP', 'WEXITSTATUS', 'WIFCONTINUED',
'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG',
'WUNTRACED', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__doc__', '__file__',
'__name__', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result',
'_make_statvfs_result', '_pickle_stat_result', '_pickle_statvfs_result', '_spawnvef', 'abort',
'access', 'altsep', 'chdir', 'chmod', 'chown', 'chroot', 'close', 'confstr', 'confstr_names', 'ctermid',
'curdir', 'defpath', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe',
'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fdatasync', 'fdopen', 'fork', 'forkpty',
'fpathconf', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'getcwd', 'getcwdu', 'getegid', 'getenv', 'geteuid',
'getgid', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getsid', 'getuid',
'isatty', 'kill', 'killpg', 'lchown', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'major', 'makedev', 'makedirs',
'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf',
'pathconf_names', 'pathsep', 'pipe', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', 'read', 'readlink',
'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'setegid', 'seteuid', 'setgid', 'setgroups',
'setpgid', 'setpgrp', 'setregid', 'setreuid', 'setsid', 'setuid', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe',
'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'stat', 'stat_float_times', 'stat_result', 'statvfs',
'statvfs_result', 'strerror', 'symlink', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp',
'tcsetpgrp', 'tempnam', 'times', 'tmpfile', 'tmpnam', 'ttyname', 'umask', 'uname', 'unlink',
'unsetenv', 'urandom', 'utime', 'wait', 'waitpid', 'walk', 'write']
>>>
 

といろいろな関数がある。


shutilモジュール
ファイルやディレクトリ管理に便利なモジュール。

>>> dir(shutil)
['Error', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_samefile', 'abspath', 'copy',
'copy2', 'copyfile', 'copyfileobj', 'copymode', 'copystat', 'copytree', 'destinsrc', 'exceptions', 'move',
'os', 'rmtree', 'stat', 'sys']
>>>
 

2.4.4の環境ではこんな感じ。


globモジュール
シェルで言うワイルドカードをサポートする。
Perlにもあるglob。

sysモジュール
pythonシステム関連のモジュール。コマンドライン引数や、標準入出力などを処理する場合などに使用する。

コマンドライン引数は、

$ cat a.py
import sys
print sys.argv
$ python a.py
['a.py']
$ python a.py 1
['a.py', '1']
$ python a.py 1 2
['a.py', '1', '2']
$
 

な感じ。

標準入出力用にはsys.stdout、sys.stdin、sys.stderrがある。



reモジュール
正規表現関連のモジュール。


>>> dir(re)
['DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'U', 'UNICODE',
'VERBOSE', 'X', '__all__', '__builtins__', '__doc__', '__file__', '__name__', 'compile', 'engine',
'error', 'escape', 'findall', 'finditer', 'match', 'purge', 'search', 'split', 'sub', 'subn', 'template']
>>>
 

などが用意されている。

mathモジュール
Cのmath関連をサポート。


urllib2モジュール
インターネットへのアクセスをサポート。

smtplibモジュール
メール送信をサポート。


datetimeモジュール
日付、時間を簡単に処理できるようにするモジュール。


zlibモジュール
gzipモジュール
bz2モジュール
zipfileモジュール
tarfileモジュール
圧縮関連モジュール。

timeitモジュール
パフォーマンス計測に使えるモジュール。より微細な粒度レベルを見るのに使える。

profileモジュール
pstatsモジュール
パフォーマンス計測に使えるモジュール。timeitよりも大きめのコードブロックを計測するのに
使える。


doctestモジュール
unitestモジュール
テストに使えるモジュール。



その他にもいろいろあるとのこと。



おしまい。
.


2008年3月5日水曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(16) -- クラス

つづいて、クラス関連。


クラス定義の書式


class ClassName:
<statements>
 

な感じ。

この定義から抜けると、クラスオブジェクトが作成され、ClassNameにクラスオブジェクトがバインドされる。


クラスオブジェクト
属性参照とインスタンス化をサポートする。

属性名として有効なのは、クラスオブジェクト生成時にクラスの名前空間にあった全ての名前。

インスタンス化はクラスオブジェクトの関数表記を使って行う。

__init__メソッド
__init__メソッドが定義されていると、新規に作成されたインスタンスに対して、
自動的に__init__メソッドがコールされる。


インスタンスオブジェクト
属性参照をサポートする。


メソッドオブジェクト
「メソッドは結合してすぐ実行される」・・・・意味がわからない・・・。
「a method is called right after it is bound」・・・もっとわからない・・・。

その他いろいろ
いろいろあるようだ。



継承
書式は以下のとおり。

class SubClassName(BaseClassName):
<statements>
 


多重継承
書式は以下のとおり。

class SubClassName(BaseClassName1, BaseClassName2, ...):
<statements>
 



残りものあれこれ
あれこれ書かれている。


反復子(iterator)
for文はコンテナオブジェクトにiter()をコールする。
※コンテナオブジェクト:不明

オブジェクトに、next()メソッドを持つオブジェクトを返す__iter__メソッドを定義すれば
iteratorをサポートできる。


ジェネレータ
反復子を作るシンプルでパワフルなツール。
yeildを使うと、iteratorを簡単に書けるらしい。



おしまい
.

[Python][お勉強] 「Pythonチュートリアル」を読む(15) -- Pythonにおけるスコープと名前空間

今日もPythonお勉強。

9章突入。

スコープと名前空間あたりから。

名前空間
名前空間とは、名前とオブジェクトのマッピングのこと。
ディクショナリで実装されているが将来変更される可能性があるとのこと。



名前空間の作成タイミング

1) ビルトイン名の入った名前空間
Pythonインタプリタ起動時に作成される。

2) モジュールのグローバル名前空間
モジュール定義の読込時に作られる。

3) 関数のローカル名前空間
関数がコールされたときに作られる。
関数から戻るか、例外が発生したときに削除される。
再帰呼び出しでも、毎回ローカル名前空間が作成される。



スコープ
スコープとは、ある名前空間から直接アクセスできる、プログラム上の範囲のこと。
スコープは「静的」に決定されるが、利用は動的に行われる。

グローバル宣言している変数以外で、最内のスコープより外側にあるものは
すべて「読取専用」。


利用について、現状動的ではあるものの、
利用についても静的の方向に進んでいるとのこと。
現にローカル変数については、「利用」についても静的。
※静的:コンパイル時に決定



おしまい
.

2008年3月4日火曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(14) -- エラーと例外

今日もPythonお勉強。

エラーと例外から。


エラー
エラーには、構文エラーと例外の2種類がある。


例外の処理
プログラムで選択した例外を処理させることができる。


try:
statements1
except Exception:
statements2
 

try節で発生した例外が、except節にある名前(上記ではException)と一致しなければ、
except節は実行されない。
このような例外のことを「未処理例外」といい、メッセージ表示後実行が終了する。
except節は、try節の中で発生した例外のみ処理をする。
except節中で発生した例外を処理したりはしない。

try/except文にはオプションでelse節を入れることができる。

try:
statements1
except Exception:
statements2
else:
statements3
 

else節の記述する場所は、全てのexcept節の後ろでなければならない。
else節は、try節中で例外が発生しなかった場合のみ実行される。



例外の引数
例外に値が付随することがある。この値のことを例外の引数という。
except節では、例外名の後に変数を指定することができる。
この変数には例外のインスタンスがバインドされる。

try:
statements1
except Exception, inst
statements2
 



例外の送出
raise文により例外を送出できる。

raise 例外名, オプション
 

第一引数は例外名を指定する。
第二引数はオプションを指定する。
オプションは「例外の引数」となる。


ユーザ定義例外

例外クラスを作成することで、独自の例外を作成することができる。
通常Exceptionクラスの派生クラスにする。
例外クラスでは通常のクラスにできることは何でもできるが、
通常、複雑にはしない。

また、ユーザ定義例外は名前の最後を"Error"とする習慣がある。



クリーンアップ
try文のexcept節以外の節にfinally節がある。
これはクリーンアップ動作を定義することを意図したもの。

finally節はtry節で例外は発生しようと、しまいと常に実行される。
また、break、continue、return文により抜ける際にも、必ず実行される。


try:
statements1
except Exception:
statements2
else:
statements3
finally:
statements4
 

のように記述できる。
(「初めてのPython」ではexcept節と一緒に使えないようなことが書いてあった気がするが、気のせいだったと。)



with文
with文を使えば、オブジェクトを使用後すぎに適切な方法でクリーンアップされることを保証させることができる。
ただし、オブジェクトにクリーンアップ動作が定義されているものに限る。

ファイルオブジェクトはクリーンアップ動作が定義されている。

with open("abc.txt") as f
for line in f:
print line
 

上記の例では、実行後ファイルfは必ずクローズされる。



おしまい。
.

2008年3月3日月曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(13) -- 入出力

今日もPythonお勉強。

今日からしばらく時間が取れなさそう・・・。

で、今日は7章突入。


str(), repr()
あらゆる値を文字列に変換する。
str()は人間が理解しやすいように、repr()はインタプリタが理解できる表現を生成することを目的にしている。

zfill()
数字からなる文字列の左にゼロをパディングする。


>>> '123'.zfill(5)
'00123'
>>>
 

な感じ。

%演算子
Cのprintf書式に似たものをサポートする。
複数の書式指定がある場合は、右辺にはタプルを指定する。

>>> "%d + %d = %d" % (10, 1, 11)
'10 + 1 = 11'
>>>
 

な感じ。

また書式指定中にディクショナリのキーを埋め込むことができる。
その際は右辺にはディクショナリを指定する。

>>> "%(1)d + %(2)d = %(3)d" % {"3":11, "1":10, "2":1}
'10 + 1 = 11'
>>>
 



ファイルの読み書き
ファイルの読み書きは、以下の順序で行う。
  • open
  • read/write
  • close
open()
ファイルをopenする。ファイルオブジェクトを返す関数で、2つの引数をもって使うのが普通。

>>> f = open("/tmp/erer.txt", "w")
 

/tmp/erer.txtを書込みモードでオープンしている。

読込モードでオープンする場合は"w"ではなく"r"を指定する。

>>> f = open("/tmp/erer.txt", "r")
 




read()
ファイルの中身を読み込む。
第一引数にはサイズを指定する。

>>> f = open("/tmp/erer.txt", "r")
>>> f.read(10)
'This is a '
>>> f.read(10)
'pen.\nJack '
>>> f.read(10)
'has a bat '
>>> f.read(10)
'and two ba'
>>> f.read(10)
'lls.\n'
>>> f.read(10)
''
>>>


上記は10バイトづつファイルを読み込んでいる。
ファイルの終わりに達すると、readは空文字列を返す。

readline()
ファイルから1行読みこむ。


>>> f = open("/tmp/erer.txt", "r")
>>> f.readline()
'This is a pen.\n'
>>> f.readline()
'Jack has a bat and two balls.\n'
>>> f.readline()
''
>>>
 

な感じ。


readlines()
ファイルの全ての行が入ったリストを返す。


>>> f = open("/tmp/erer.txt", "r")
>>> f.readlines()
['This is a pen.\n', 'Jack has a bat and two balls.\n']
>>> f.readlines()
[]
>>>
 

な感じ。



write()
文字列をファイルに書き込む。

>>> f = open("/tmp/erer.txt", "w")
>>> f.write("Hello, World\n")
 

な感じ。



tell()
現在位置を返す。

>>> f.tell()
13L
 

現在13バイト目。



seek()
現在位置を変更する。

>>> f.seek(5)
>>> f.tell()
5L
>>> f.seek(1,1)
>>> f.tell()
6L
>>>
 

な感じ。

close()
ファイルオブジェクトの使用を終える。

>>> f.close()
>>>
 




pickleモジュール
Pythonでのオブジェクトをシリアライズする。
ファイルfにリストLを保存するには以下のようにする。

>>> f = open("/tmp/erer.txt", "w")
>>> L = [1,2,3,4,5]
>>> import pickle
>>> pickle.dump(L, f)
>>> f.close()
>>>


すると・・・、
/tmp/erer.txtの中身は、

$ cat /tmp/erer.txt
(lp0
I1
aI2
aI3
aI4
aI5
a.


な感じに・・・。

これを読み込むには・・・

>>> import pickle
>>> f = open("/tmp/erer.txt", "r")
>>> L = pickle.load(f)
>>> L
[1, 2, 3, 4, 5]
>>>
 

などとする。





おしまい。
.

2008年3月2日日曜日

[Python][お勉強] 「Pythonチュートリアル」を読む(12) -- モジュール

6章突入。


スクリプト
Pythonのトップレベルから抜けてもう一度入りなおすと、今まで入力した定義は関数も変数も全て失われる。それでは困るのでテキストファイルにプログラムを入力しておいて、Pythonへ渡して実行してやる方が
長いプログラムの場合は良い。このような場合のテキストファイルにプログラムを入力することを「スクリプトの作成」という。

モジュール
プログラムが長くなった場合、複数のファイルに分割して保存しておきたくなる。
Pythonでは、分割して保存しておいたファイルを読み込み、スクリプトやトップレベルで使用する手段を提供する。このファイルのことを「モジュール」という。
モジュールのファイル名は、モジュール名に接尾辞「.py」をつけたものである。
モジュールの中では、グローバル変数__name__にモジュール名がセットされる。

import
分割して保存しておいた「モジュール」を使用できるように読み込む操作を「import」という。
importする構文は以下のとおり。


import モジュール名
from モジュール名 import 変数名・関数名
 

最初のimport文ではモジュール名がimportする側のシンボル表に取り込まれる。
2番目の文ではモジュール名はシンボル表には取り込まれない。

また、全てのシンボル(アンダースコアで始まる以外のシンボル)を取り込むには、

from モジュール名 import *
 

とやる。




モジュールの検索パス

最初にカレントディレクトリを探す。
次に環境変数PYTHONPATHで指定されたディレクトリを探す。
次にインストール時に決まるデフォルトパスを探す。

また、変数sys.pathに検索パスがセットされている。
プログラムからモジュールの検索パスを変更したりすることも可能。



.pycファイル
プログラムの起動を速くするためにするバイトコンパイル済みコード。
.pycファイルにしたからといって、処理速度が向上するわけではない。
あくまで読み込むスピードが向上するだけだ、とのこと。



dir()関数
モジュールがどのような名前を定義しているのか、どのような名前をもっているのかを確認するのに
使用できる。
書式は以下のとおり。

dir(モジュール名)
dir()
 

最初の「dir(モジュール名)」では、パラメータで指定されたモジュールについて、名前のリストを返す。

たとえばsysモジュール。

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__',
'__stdin__', '__stdout__', '_getframe', 'api_version', 'argv', 'builtin_module_names',
'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info',
'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval',
'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getrecursionlimit',
'getrefcount', 'hexversion', 'maxint', 'maxunicode', 'meta_path', 'modules', 'path',
'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2',
'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace',
'stderr', 'stdin', 'stdout', 'version', 'version_info', 'warnoptions']
>>>
 

sysモジュールはこんな感じ。

2行目の「dir()」は、現在定義されている名前のリストを返す。

$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__']
>>>
 

な感じ。
ここで注意すべきことは、ビルトインの関数名、変数名はリストアップしないということ。
ビルトインの関数名や変数名は、モジュール__builtin__で定義されている。

>>> import __builtin__
>>> dir(__builtin__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'DeprecationWarning',
'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError',
'FutureWarning', 'IOError', 'ImportError', 'IndentationError', 'IndexError',
'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',
'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'OverflowWarning', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError',
'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning',
'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError',
'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__debug__', '__doc__',
'__import__', '__name__', 'abs', 'apply', 'basestring', 'bool', 'buffer', 'callable', 'chr',
'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict',
'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'frozenset', 'getattr',
'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter',
'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow',
'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set',
'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',
'vars', 'xrange', 'zip']
>>>
 

な感じ。




パッケージ
ドット区切りのモジュール名。パッケージによって、モジュール名の重複を気にしないでおくことが
可能になる。



__init__.py中の__all__の定義

from パッケージ import *
 

の際に、__all__で指定された名前のみインポートさせることができる。


Python2.5以降の相対インポート。
パッケージのモジュール中で、サブパッケージ中のモジュールをインポートする場合、
相対インポート文が書ける。

from . import echo
from .. import Formats
from ..Filters import equalizer
 

などなど。


__path__
パッケージには、__path__という特殊な属性がある。
__init__.pyが実行される前に__init__.pyが存在するディレクトリ名に初期化される。

とりたてて必要になることは無いらしい。
この値を書き換えると、パッケージに含まれるモジュールやサブパッケージの検索に
影響を与えるらしい。




おしまい
.

[Python][お勉強] 「Pythonチュートリアル」を読む(11) -- 型の比較

シーケンス型どうしの比較には、辞書的順序が使用される。
最初のアイテム同士を比較し、異なればその大小が結果として使われる。
同じであれば次のアイテム同士を比較する。
そして、どちらかのシーケンスのアイテムが無くなるまで繰り返される。

短いシーケンスと長いシーケンスでは短いシーケンスが小とされる。

異なるオブジェクトの場合は、型同士の比較はその名前で決まるが、
将来のバージョンで変更されるかもしれないので、信頼して用いるべき
ではない、とのこと。



おしまい。
.

[Python][お勉強] 「Pythonチュートリアル」を読む(10) -- 条件についての補足

今日もPythonのお勉強。

5章7節から。

条件についての補足
Pythonでは、他言語と違って、


a < b < c
 

といった書き方ができる。

また、Pythonでは式中での代入ができない。
そのため、==とかくところを間違って=と書いてしまう心配がない。


おしまい。
.