SlideShare a Scribd company logo
ALPS チュートリアル: Python 
ALPS チュートリアル: Python 
CMSI ハンズオン 
ALPS Collaboration 
http://alps.comp-phys.org/ 
2014-10-16 
1 / 20
ALPS チュートリアル: Python 
Outline 
1 データ型 
2 制御フロー 
3 関数 
4 モジュール 
5 ファイルの読み書き 
6 参考文献 
2 / 20
ALPS チュートリアル: Python 
データ型 
基本的なデータ型 
このセクションではPython で使われる基本的なデータ型を紹介し 
ます. array はnumpy モジュールで定義されている型で,Python 
がもともと持っている型ではありませんが,科学計算では非常に便 
利な性質を持つので紹介します. 
数値int, (long), 
oat, complex 
文字列'hello,python' 
list a = [1, 2, 3] 
tuple b = (1, 2, 3) 
dictionary c = f'apple': 100, 'orange': 200, 'pear': 300g 
set set([1, 2, 3]) 
bool True, False 
array numpy array([1,2,3]) 
3 / 20
ALPS チュートリアル: Python 
データ型 
数値 
整数, 倍精度浮動小数, 複素数の3 種類あります.整数はPython 
のバージョンで扱いが変わります.単精度浮動小数はありません. 
int, (long) 
python3 ではint,long はint に統合されました. 
python2x とpython3x では整数同士の演算で計算結果がちがい 
ます! 
python2: -1/2 = -1, python3: -1/2 = -0.5 

oat は倍精度のみです.単精度はありません. 
complex 
'j' もしくは'J' で虚数部を表す2 + 3j 
実部real(2+3j) = 2, 虚部imag(2+3j) = 3 
型変換を行えます. 
>>> a = 1.8 
>>> int(a) 
1 
>>> a = 3 
>>> float(a) 
3.0 
4 / 20
ALPS チュートリアル: Python 
データ型 
文字列 
>>> s = 'ab:cd:ef' # 文字列の定義 
>>> s = s.split(':') # 指定した文字で文字列を分割 
>>> print s 
['ab', 'cd', 'ef'] 
>>> '-'.join(s) # 指定した文字で文字列同士を結合 
'ab-cd-ef' 
>>> 'a' + 'b' + 'c' # 文字列を結合 
'abc' 
シングルクォートもしくはダブルクォートで囲った文字列で定 
義できます. 
複数行の文字列は"'..."' もしくは"""...""" で囲む 
5 / 20
ALPS チュートリアル: Python 
データ型 
list, tuple 
>>>a = [1,2,3,4,5] # list 
>>>a[0] # インデックスは0 スタート 
1 # 要素1 個だけなら返り値はスカラー 
>>>a[2:4] # 2<=,<4 番目のの要素が返される. 
[3,4] # 複数の要素なら返り値はリスト. 
>>>b = (1,2,3,4,5) # tuple 
>>>b[1:] # ':' の値を省くこともできる 
(2, 3, 4, 5) 
ここではリストの要素として数値のみを扱ったが,python オ 
ブジェクトなら何でもリストの要素として扱える 
6 / 20
ALPS チュートリアル: Python 
データ型 
list のメソッド 
>>>a.reverse() # 要素の並びを逆にする 
>>>a # a そのものが変更されるので注意! 
[5, 4, 3, 2, 1] 
>>>a.pop() # リストの最後尾の要素を取り出す. 
1 # 返り値は取り出された要素 
>>>a 
[5, 4, 3, 2] 
>>>a.sort() 
>>>a 
[2, 3, 4, 5] 
ここではリストの要素として数値のみを扱ったが,python オ 
ブジェクトなら何でもリストの要素として扱える 
7 / 20
ALPS チュートリアル: Python 
データ型 
list とtuple の違う点(1) 
>>>b = (1) # これはtuple にならない! 
>>>type(b) 
int # 整数扱いになる 
>>>b = (1,) # 要素1 個のtuple を定義する 
>>>type(b) 
tuple # これはちゃんとtuple になっている 
>>>a = [1] # これはlist 
>>>type(a) 
list 
8 / 20
ALPS チュートリアル: Python 
データ型 
list とtuple の違う点(2) 
>>>b += (2, 3, 3) # 要素を付け加えることはできる 
>>>b 
(1, 2, 3, 3) 
>>>b[3] = 5 # 要素を変更することはできない 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
TypeError: 'tuple' object does not support item assignment 
要素1 個の場合の扱いが違う 
tuple の要素の値は変更できない. 
tuple は辞書のキーに登録できる.list は不可. 
9 / 20
ALPS チュートリアル: Python 
データ型 
list のコピー 
浅いコピーと深いコピーの2 種類ある 
浅いコピーではオブジェ 
クトのアドレスをコピー 
する 
深いコピーではオブジェ 
クトの値をコピーする 
a 
アドレス値 
0x7fff5fbffae8 101 
b 
アドレス値 
0x6aff5fbff128 0x7fff5fbffae8 
a 
アドレス値 
0x7fff5fbffae8 101 
b 
アドレス値 
0x6aff5fbff128 101 
>>>a = [101, 102, 103] 
>>>b = a # アドレスをコピー 
>>>a[1] = 333 
>>>print a, b 
[101, 333, 103] [101, 333, 103] 
>>>b = a[:] # 値をコピー 
>>>a[1] = 444 
>>>print a, b 
[101, 444, 103] [101, 333, 103] 
10 / 20
ALPS チュートリアル: Python 
データ型 
ネストされたlist のコピー 
浅いコピーになってしまう例 
>>>a = [1, [2, 3]] 
>>>b = a[:] 
>>>a[0] = 4 
>>>a[1][0] = 5 
>>>print a, b 
[4, [5, 3]] [1, [5, 3]] 
>>> 
深いコピー 
>>>import copy 
>>>a = [1, [2, 3]] 
>>>b = copy.deepcopy(a) 
>>>a[0] = 101 
>>>a[1][0] = 102 
>>>print a, b 
[101, [102, 3]] [1, [2, 3]] 
ネストされているとスライス':' で返されるのがアドレスに 
なってしまう 
ネストされたlist で深いコピーをするにはcopy モジュールの 
deepcopy を使う 
11 / 20
ALPS チュートリアル: Python 
データ型 
辞書型の使い方 
>>>dic = {'key0': 0, 'key1': 1} # key:value の組を登録 
>>>dic['key2'] = 2 # key2:2 を登録 
>>>dic.keys() # 辞書に登録されている全てのkey 
['key2', 'key1', 'key0'] 
>>>dic.values() # 全てのval 
[2, 1, 0] 
>>>dic.items() # 全てのkey:val の組を表示 
[('key2', 2), ('key1', 1), ('key0', 0)] 
>>>del dic['key0'] # 辞書からkey を削除 
>>>dic.items() 
[('key2', 2), ('key1', 1)] 
辞書の要素はソートされていない.登録順なども関係ない. 
12 / 20
ALPS チュートリアル: Python 
制御フロー 
if-elif-else 文の使い方 
if-elif-else で条件分岐を作れる. 
>>>if a > 0: 
>>> print '0' 
>>>elif a == 0: 
>>> print '1' 
>>>else: 
>>> print '2' 
>>> 
>>> 
三項演算子 
>>>val = val1 if cond1 else val2 
13 / 20
ALPS チュートリアル: Python 
制御フロー 
for 文の使い方 
>>>for i in ('a', 'b', 'c', 'd'): 
>>> print i, # コンマで改行を抑制している 
a b c d 
アンパック代入とenumerate() 
>>>for i,j in enumerate(('a', 'b', 'c', 'd')): 
>>> print i, j 
0 a 
1 b 
... 
アンパック代入はpython で使える一般的なテクニックです. 
>>>i,j,k = ['a', 'b', 'c'] 
14 / 20
ALPS チュートリアル: Python 
制御フロー 
while 文の使い方 
a = 0 
while a in range(10): 
a += 1 
if a < 3: 
continue 
elif a == 8: 
break 
print a 
カレントディレクトリに上の内容でexWhile.py というファイ 
ルを作ってimport してみましょう 
"val in シークエンス:" というフレーズはwhile だけでなくif, 
for など至る所で使えます 
continue, break も同じくif, for などでも使えます 
15 / 20
ALPS チュートリアル: Python 
関数 
関数 
>>> def f(x, y): 
>>> ....z = x * y # 空白4 つのインデント! 
>>> ....for i in [1, 2, 3]: 
>>> .... z += i 
>>> ....return z 
>>> 
>>> f(2,3) 
12 
def 関数名(変数,...): で関数が定義できます 
Python ではインデント(ここの例では空白4 つ) によりスコー 
プを制御します 
16 / 20
ALPS チュートリアル: Python 
モジュール 
Python プログラムの階層構造 
プログラムファイルのディレクトリ構成== 名前空間 
モジュール 
1 つの"hoge.py" ファイルが1 つのモジュール 
パッケージ 
ファイルの階層構造 
pyalps/ 
alea.py 
dataset.py 
モジュールの階層構造 
pyalps.alea.class.method 
pyalps.dataset.class.method 
17 / 20
ALPS チュートリアル: Python 
モジュール 
モジュールの読み込み 
>>> import fff as f # 別名をつけてインポート 
>>> f.ggg(x, y) 
... 
>>> from fff import * # fff 以下のすべてをインポート 
>>> ggg(x, y) # 名前空間fff が外れる 
... 
>>> from fff import ggg as g # ggg のみを指定してインポート 
>>> g(x, y) 
fff モジュール中のggg 関数を呼び出しています. 
呼び出し方により名前空間の階層が変わっています. 
18 / 20
ALPS チュートリアル: Python 
ファイルの読み書き 
ファイルの読み書き 
ファイルから1行ごとにデータを読み込む方法 
for line in open('dat.txt', 'r'): 
items = line.split('') 
print items[0], float(items[1]) 
入力データ(dat.txt) 
a 3.432 
b 1.42 
c 2.159 
open でdat.txt ファイルをreadonly で読み込む 
読み込んだファイルを1 行毎に処理する.読み込まれた行は1 
つのストリングとして扱われるので区切り文字(今の場合空 
白)で分割している. 
読み込んだストリングを浮動小数点にキャストしている. 
上の例ではfor 文の終了とともにファイルは自動で閉じられる.し 
かし,一般的には 
f = open('dat.txt', 'r') として読み込んだ場合,ファイルを読 
み終えたらf.close() で閉じなければならない. 
19 / 20
ALPS チュートリアル: Python 
参考文献 
参考文献 
科学技術計算のためにpython を始めよう 
http://www.ike-dyn.ritsumei.ac.jp/~uchida/ 
scipy-lecture-notes/intro/index.html 
初心者のはまりどころhttp://webtech-walker.com/ 
archive/2010/10/13191417.html 
Doug Hellmann さんhttp://doughellmann.com 
標準モジュールなどの使い方が例とともに書いてあり分かりや 
すい 
20 / 20

More Related Content

PDF
ALPSチュートリアル(6) Matplotlib入門
PDF
ALPSチュートリアル(5) ALPS Python入門
PDF
ALPSチュートリアル(1) ALPSの概要
PDF
ALPSチュートリアル(3) アプリケーション実習
PDF
ALPSチュートリアル(7) アプリケーションのALPS化
PDF
ALPSチュートリアル(2) ALPSのインストール
PDF
研究生のためのC++ no.7
PDF
研究生のためのC++ no.2
ALPSチュートリアル(6) Matplotlib入門
ALPSチュートリアル(5) ALPS Python入門
ALPSチュートリアル(1) ALPSの概要
ALPSチュートリアル(3) アプリケーション実習
ALPSチュートリアル(7) アプリケーションのALPS化
ALPSチュートリアル(2) ALPSのインストール
研究生のためのC++ no.7
研究生のためのC++ no.2

What's hot (20)

PDF
Subprocess no susume
PDF
Python で munin plugin を書いてみる
PPTX
Scalamacrosについて
PDF
Fork/Join Framework。そしてLambdaへ。
PDF
Rの高速化
KEY
Applicative functor
KEY
ひのきのぼうだけで全クリ目指す
PDF
R-hpc-1 TokyoR#11
PDF
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
PPTX
前期講座09
PDF
RのffでGLMしてみたけど...
PDF
Rのデータ構造とメモリ管理
PDF
Haskell で CLI
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方
PDF
RのffとbigmemoryとRevoScaleRとを比較してみた
PDF
データサイエンスワールドからC++を眺めてみる
PDF
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
PDF
PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo
Subprocess no susume
Python で munin plugin を書いてみる
Scalamacrosについて
Fork/Join Framework。そしてLambdaへ。
Rの高速化
Applicative functor
ひのきのぼうだけで全クリ目指す
R-hpc-1 TokyoR#11
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
前期講座09
RのffでGLMしてみたけど...
Rのデータ構造とメモリ管理
Haskell で CLI
PostgreSQL - C言語によるユーザ定義関数の作り方
RのffとbigmemoryとRevoScaleRとを比較してみた
データサイエンスワールドからC++を眺めてみる
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
awk v.s. bashどっちが強い?@OSC2011Tokyo
Ad

Similar to ALPSチュートリアル(4) Python入門 (20)

PDF
Python勉強会3-コレクションとファイル
PPT
Pythonintro
PPTX
Python 学習教材
PPT
アルゴリズムとデータ構造2
PDF
Pythonで始めるDropboxAPI
PDF
Python入門
PPTX
Python 学習教材 (~299ページ)
PPT
アルゴリズムとデータ構造3
PDF
Introduction to Numpy (and Python) [JPN]
PDF
DATUM STUDIO PyCon2016 Turorial
PDF
Python勉強会4-制御構文とパッケージ
PDF
はじめてのPython
PDF
PythonでLispを実装した (evalつき)
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
Python勉強会2-数値と文字列
PDF
プログラミングHaskell(第2章)
PDF
すごいHaskell読書会#1 in 大阪
KEY
Algebraic DP: 動的計画法を書きやすく
PPT
アルゴリズムとデータ構造1
PDF
すごいHaskell楽しく学ぼう 第6章
Python勉強会3-コレクションとファイル
Pythonintro
Python 学習教材
アルゴリズムとデータ構造2
Pythonで始めるDropboxAPI
Python入門
Python 学習教材 (~299ページ)
アルゴリズムとデータ構造3
Introduction to Numpy (and Python) [JPN]
DATUM STUDIO PyCon2016 Turorial
Python勉強会4-制御構文とパッケージ
はじめてのPython
PythonでLispを実装した (evalつき)
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Python勉強会2-数値と文字列
プログラミングHaskell(第2章)
すごいHaskell読書会#1 in 大阪
Algebraic DP: 動的計画法を書きやすく
アルゴリズムとデータ構造1
すごいHaskell楽しく学ぼう 第6章
Ad

More from Computational Materials Science Initiative (20)

PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
MateriApps LIVE! の設定
PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
How to setup MateriApps LIVE!
PDF
MateriApps LIVE! の設定
PDF
How to setup MateriApps LIVE!
PDF
PDF
PDF
How to setup MateriApps LIVE!
PDF
PDF
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
PDF
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
PDF
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps LIVE! の設定
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps LIVE! の設定
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①

ALPSチュートリアル(4) Python入門

  • 1. ALPS チュートリアル: Python ALPS チュートリアル: Python CMSI ハンズオン ALPS Collaboration http://alps.comp-phys.org/ 2014-10-16 1 / 20
  • 2. ALPS チュートリアル: Python Outline 1 データ型 2 制御フロー 3 関数 4 モジュール 5 ファイルの読み書き 6 参考文献 2 / 20
  • 3. ALPS チュートリアル: Python データ型 基本的なデータ型 このセクションではPython で使われる基本的なデータ型を紹介し ます. array はnumpy モジュールで定義されている型で,Python がもともと持っている型ではありませんが,科学計算では非常に便 利な性質を持つので紹介します. 数値int, (long), oat, complex 文字列'hello,python' list a = [1, 2, 3] tuple b = (1, 2, 3) dictionary c = f'apple': 100, 'orange': 200, 'pear': 300g set set([1, 2, 3]) bool True, False array numpy array([1,2,3]) 3 / 20
  • 4. ALPS チュートリアル: Python データ型 数値 整数, 倍精度浮動小数, 複素数の3 種類あります.整数はPython のバージョンで扱いが変わります.単精度浮動小数はありません. int, (long) python3 ではint,long はint に統合されました. python2x とpython3x では整数同士の演算で計算結果がちがい ます! python2: -1/2 = -1, python3: -1/2 = -0.5 oat は倍精度のみです.単精度はありません. complex 'j' もしくは'J' で虚数部を表す2 + 3j 実部real(2+3j) = 2, 虚部imag(2+3j) = 3 型変換を行えます. >>> a = 1.8 >>> int(a) 1 >>> a = 3 >>> float(a) 3.0 4 / 20
  • 5. ALPS チュートリアル: Python データ型 文字列 >>> s = 'ab:cd:ef' # 文字列の定義 >>> s = s.split(':') # 指定した文字で文字列を分割 >>> print s ['ab', 'cd', 'ef'] >>> '-'.join(s) # 指定した文字で文字列同士を結合 'ab-cd-ef' >>> 'a' + 'b' + 'c' # 文字列を結合 'abc' シングルクォートもしくはダブルクォートで囲った文字列で定 義できます. 複数行の文字列は"'..."' もしくは"""...""" で囲む 5 / 20
  • 6. ALPS チュートリアル: Python データ型 list, tuple >>>a = [1,2,3,4,5] # list >>>a[0] # インデックスは0 スタート 1 # 要素1 個だけなら返り値はスカラー >>>a[2:4] # 2<=,<4 番目のの要素が返される. [3,4] # 複数の要素なら返り値はリスト. >>>b = (1,2,3,4,5) # tuple >>>b[1:] # ':' の値を省くこともできる (2, 3, 4, 5) ここではリストの要素として数値のみを扱ったが,python オ ブジェクトなら何でもリストの要素として扱える 6 / 20
  • 7. ALPS チュートリアル: Python データ型 list のメソッド >>>a.reverse() # 要素の並びを逆にする >>>a # a そのものが変更されるので注意! [5, 4, 3, 2, 1] >>>a.pop() # リストの最後尾の要素を取り出す. 1 # 返り値は取り出された要素 >>>a [5, 4, 3, 2] >>>a.sort() >>>a [2, 3, 4, 5] ここではリストの要素として数値のみを扱ったが,python オ ブジェクトなら何でもリストの要素として扱える 7 / 20
  • 8. ALPS チュートリアル: Python データ型 list とtuple の違う点(1) >>>b = (1) # これはtuple にならない! >>>type(b) int # 整数扱いになる >>>b = (1,) # 要素1 個のtuple を定義する >>>type(b) tuple # これはちゃんとtuple になっている >>>a = [1] # これはlist >>>type(a) list 8 / 20
  • 9. ALPS チュートリアル: Python データ型 list とtuple の違う点(2) >>>b += (2, 3, 3) # 要素を付け加えることはできる >>>b (1, 2, 3, 3) >>>b[3] = 5 # 要素を変更することはできない Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment 要素1 個の場合の扱いが違う tuple の要素の値は変更できない. tuple は辞書のキーに登録できる.list は不可. 9 / 20
  • 10. ALPS チュートリアル: Python データ型 list のコピー 浅いコピーと深いコピーの2 種類ある 浅いコピーではオブジェ クトのアドレスをコピー する 深いコピーではオブジェ クトの値をコピーする a アドレス値 0x7fff5fbffae8 101 b アドレス値 0x6aff5fbff128 0x7fff5fbffae8 a アドレス値 0x7fff5fbffae8 101 b アドレス値 0x6aff5fbff128 101 >>>a = [101, 102, 103] >>>b = a # アドレスをコピー >>>a[1] = 333 >>>print a, b [101, 333, 103] [101, 333, 103] >>>b = a[:] # 値をコピー >>>a[1] = 444 >>>print a, b [101, 444, 103] [101, 333, 103] 10 / 20
  • 11. ALPS チュートリアル: Python データ型 ネストされたlist のコピー 浅いコピーになってしまう例 >>>a = [1, [2, 3]] >>>b = a[:] >>>a[0] = 4 >>>a[1][0] = 5 >>>print a, b [4, [5, 3]] [1, [5, 3]] >>> 深いコピー >>>import copy >>>a = [1, [2, 3]] >>>b = copy.deepcopy(a) >>>a[0] = 101 >>>a[1][0] = 102 >>>print a, b [101, [102, 3]] [1, [2, 3]] ネストされているとスライス':' で返されるのがアドレスに なってしまう ネストされたlist で深いコピーをするにはcopy モジュールの deepcopy を使う 11 / 20
  • 12. ALPS チュートリアル: Python データ型 辞書型の使い方 >>>dic = {'key0': 0, 'key1': 1} # key:value の組を登録 >>>dic['key2'] = 2 # key2:2 を登録 >>>dic.keys() # 辞書に登録されている全てのkey ['key2', 'key1', 'key0'] >>>dic.values() # 全てのval [2, 1, 0] >>>dic.items() # 全てのkey:val の組を表示 [('key2', 2), ('key1', 1), ('key0', 0)] >>>del dic['key0'] # 辞書からkey を削除 >>>dic.items() [('key2', 2), ('key1', 1)] 辞書の要素はソートされていない.登録順なども関係ない. 12 / 20
  • 13. ALPS チュートリアル: Python 制御フロー if-elif-else 文の使い方 if-elif-else で条件分岐を作れる. >>>if a > 0: >>> print '0' >>>elif a == 0: >>> print '1' >>>else: >>> print '2' >>> >>> 三項演算子 >>>val = val1 if cond1 else val2 13 / 20
  • 14. ALPS チュートリアル: Python 制御フロー for 文の使い方 >>>for i in ('a', 'b', 'c', 'd'): >>> print i, # コンマで改行を抑制している a b c d アンパック代入とenumerate() >>>for i,j in enumerate(('a', 'b', 'c', 'd')): >>> print i, j 0 a 1 b ... アンパック代入はpython で使える一般的なテクニックです. >>>i,j,k = ['a', 'b', 'c'] 14 / 20
  • 15. ALPS チュートリアル: Python 制御フロー while 文の使い方 a = 0 while a in range(10): a += 1 if a < 3: continue elif a == 8: break print a カレントディレクトリに上の内容でexWhile.py というファイ ルを作ってimport してみましょう "val in シークエンス:" というフレーズはwhile だけでなくif, for など至る所で使えます continue, break も同じくif, for などでも使えます 15 / 20
  • 16. ALPS チュートリアル: Python 関数 関数 >>> def f(x, y): >>> ....z = x * y # 空白4 つのインデント! >>> ....for i in [1, 2, 3]: >>> .... z += i >>> ....return z >>> >>> f(2,3) 12 def 関数名(変数,...): で関数が定義できます Python ではインデント(ここの例では空白4 つ) によりスコー プを制御します 16 / 20
  • 17. ALPS チュートリアル: Python モジュール Python プログラムの階層構造 プログラムファイルのディレクトリ構成== 名前空間 モジュール 1 つの"hoge.py" ファイルが1 つのモジュール パッケージ ファイルの階層構造 pyalps/ alea.py dataset.py モジュールの階層構造 pyalps.alea.class.method pyalps.dataset.class.method 17 / 20
  • 18. ALPS チュートリアル: Python モジュール モジュールの読み込み >>> import fff as f # 別名をつけてインポート >>> f.ggg(x, y) ... >>> from fff import * # fff 以下のすべてをインポート >>> ggg(x, y) # 名前空間fff が外れる ... >>> from fff import ggg as g # ggg のみを指定してインポート >>> g(x, y) fff モジュール中のggg 関数を呼び出しています. 呼び出し方により名前空間の階層が変わっています. 18 / 20
  • 19. ALPS チュートリアル: Python ファイルの読み書き ファイルの読み書き ファイルから1行ごとにデータを読み込む方法 for line in open('dat.txt', 'r'): items = line.split('') print items[0], float(items[1]) 入力データ(dat.txt) a 3.432 b 1.42 c 2.159 open でdat.txt ファイルをreadonly で読み込む 読み込んだファイルを1 行毎に処理する.読み込まれた行は1 つのストリングとして扱われるので区切り文字(今の場合空 白)で分割している. 読み込んだストリングを浮動小数点にキャストしている. 上の例ではfor 文の終了とともにファイルは自動で閉じられる.し かし,一般的には f = open('dat.txt', 'r') として読み込んだ場合,ファイルを読 み終えたらf.close() で閉じなければならない. 19 / 20
  • 20. ALPS チュートリアル: Python 参考文献 参考文献 科学技術計算のためにpython を始めよう http://www.ike-dyn.ritsumei.ac.jp/~uchida/ scipy-lecture-notes/intro/index.html 初心者のはまりどころhttp://webtech-walker.com/ archive/2010/10/13191417.html Doug Hellmann さんhttp://doughellmann.com 標準モジュールなどの使い方が例とともに書いてあり分かりや すい 20 / 20