≪いっしょにPython≫ プログラマーの実験ノート

 このページは,プログラム言語Pythonをこれから学ぼうと考えている筆者の備忘録です.
 そこそこ調べて書いていますが,仕様を精密に調べたものではありません.どちらかと言えば,実装されたPython 3を使ってみてどうなったかということを中心に書いたものです.いわば,実験ノートの記録です.
Pythonの練習には,
(1) IDLEというメニューから入って,>>>というプロンプトが表示される状態で使う場合
• 画面の上端がPython 3.7.x Shellとなっていて,2行目がFile, Edit, Shell, Debug, ...となっている
• 1行入力するたびに,エラーを確かめながら処理を進める,対話型インタプリタの形になっている
(2) IDLEというメニューから入って,左上端のFileをクリック→New Fileと進む場合
• 画面の上端がファイル名(初めはUntitled)となっていて,2行目がFile, Edit, format, Run, ...となっている
(3) Python 3.7.x という真っ黒なコマンドプロンプトの画面(ターミナルウィンドウ)から入るもの
の3通りが使えるが,以下は(2)のNew Fileから,テキストエディタを使って,プログラムを書く場合を考える.

1. モジュールのimport

• Pythonのファイルは,ファイル名.pyの形で拡張子pyを付けて保存されている.このようなPythonのコードが書かれたファイルをここではモジュールという.
• Pythonファイルから,コンピュータ上の同じフォルダに保存されている他のPytohnファイルに書かれている変数,関数,クラスなどを読み出して利用するには,次の書式を使う.
【書式1】
import モジュール名, モジュール名, ...
2つ以上のモジュールをインポートするときは,カンマで区切って書き並べる.
【使い方】
モジュール名.オブジェクト名
(グローバル変数,関数も同様にしてインポートできる)
【例 1.1.1】
次のmy_file1.pyとmy_file2.pyがPC内の同一フォルダにあって,my_file2.pyをRun→Run Moduleを選択する場合
my_file1.py
my_file2.py

12
abcdefg
20
wan
 この方法では,毎回 my_file1.を付けなければならないので,ファイル名my_file1が長いとき,少々煩わしいかもしれません.
 何度も使うときは,xxx1 = my_file1.xx1などと短い名前の変数に代入して使うとよいでしょう.

【書式2】
import モジュール名 as 別名, モジュール名 as 別名, ...
2つ以上のモジュールをインポートするときは,カンマで区切って書き並べる.
【使い方】
別名.オブジェクト名
(グローバル変数,関数も同様にしてインポートできる)
【例 1.1.2】
次のmy_file1.py, bmy_file2.py, my_file3.pyがPC内の同一フォルダにあって,my_file3.pyをRun→Run Moduleを選択する場合
my_file1.py
my_file2.py
my_file3.py

12
abcdefg
20
wan
 この方法では,元のモジュール名が長くても,短い別名が使えるので樂になる.

【書式3】
from モジュール名 import オブジェクト名, オブジェクト名, ...
2つ以上のオブジェクトをインポートするときは,カンマで区切って書き並べる.
【使い方】
オブジェクト名
(グローバル変数,関数も同様にしてインポートできる)
【例 1.1.3】
次のmy_file1.pyとmy_file2.pyがPC内の同一フォルダにあって,my_file2.pyをRun→Run Moduleを選択する場合
my_file1.py
my_file2.py

12
abcdefg
20
wan
 インポートするときに,関数やオブジェクトの名前に括弧は付けない
 この書き方ではモジュール名を書かなくてもよい

【書式4】
from モジュール名 import オブジェクト名, オブジェクト名, ...
2つ以上のオブジェクトをインポートするときは,カンマで区切って書き並べる.
【使い方】
オブジェクト名
(グローバル変数,関数も同様にしてインポートできる)
【例 1.1.4】
次のmy_file1.py, bmy_file2.py, my_file3.pyがPC内の同一フォルダにあって,my_file3.pyをRun→Run Moduleを選択する場合
my_file1.py
my_file2.py
my_file3.py

12
abcdefg
20
wan
 2行になるときは\でつなぐと1行として扱われる
 インポートするときに,関数やオブジェクトの名前に括弧は付けない
 この書き方ではモジュール名を書かなくてもよい

【書式5】
from モジュール名 import *
 モジュールに含まれているすべてのオブジェクト(グローバル変数,関数を含む)をインポートするには,importにアスタリスク(*)を付けるとよい.
 ただし,この方法は,とりあえず全部インポートできるので,初歩的な練習に使うには楽な代わりに,ある程度まとまった大きなプログラムを作っている場合に,様々な名前の変数,関数,オブジェクトが上書きされる可能性があり,安全な方法とは言えない.
【使い方】
オブジェクト名
(グローバル変数,関数も同様にしてインポートできる)
【例 1.1.5】
次のmy_file1.py, bmy_file2.pyがPC内の同一フォルダにあって,my_file2.pyをRun→Run Moduleを選択する場合
my_file1.py
my_file2.py

12
abcdefg
20
wan
 この書き方ではモジュール名を書かなくてもよい
 インポートするモジュールに__all__という名のリストがなければ,全部インポートされる.

2. 標準ライブラリにあるモジュールの利用

【pathとは】
• パソコンの中のCドライブのあるフォルダ(ディレクトリ)の深い階層にあるサブフォルダにファイルがあるとき,同一フォルダにあるファイルはファイル名だけで読み出すことができますが,他のフォルダにあるファイルはファイル名だけでは読み出せないのが原則です.
• これに対して,単にファイル名だけ指定してドライブ名/フォルダ名/サブフォルダ名/...を省略した場合でも,自動的に特定の経路(path)をたどってファイルを探すように設定しておくことを,pathを通すなどと言います.
• Pythonをインストールすると,Pythonフォルダのサブフォルダになっている /lib,/Lib/idlelib,/lib/site-packages,/DLLs,/python37.zipなどにpathが通されていて,これらのサブフォルダにあるファイルは,ファイル名だけで読み出すことができるようになっています.
• 例えば,Pythonのフォルダ内の /lib にrandom.pyというファイル(モジュール)がありますが,このファイルは /libの中にあってpathが通っているので,ファイル名(モジュール名)だけで読み出すことができます.

(1) 乱数の発生:randomモジュールの利用

random.pyは/libに格納されており,pathが通っているので,ファイル名(モジュール名)を書けばインポートできます.
• randomモジュールには,例えば次のような関数があります.(もっとたくさんあります.これが全部ではありません.)
1)random()
0≦x<1となる実数の1つを疑似乱数として返します.
2)uniform(a, b)
a≦x≦bとなる実数の1つを疑似乱数として返します.(b<の場合は,b≦x≦aとなる実数を返す)
3)randint(a, b)
a≦x≦bとなる整数の1つを疑似乱数として返します.
4)sample(List1, k)
リストL1から重複なしでk個の標本を抽出したリストを返します.kはList1の要素数以下でなければならない.
【例 2.1.1】
関数random()の利用


0.8761413436719643
0.15241557845948905
0.6379925283538166
0.4374418911702229
0.19990026176388132
0.5714762561670236
0.6760175933530698
0.13216785949646592
0.03183554696191582
0.5188633467235998
【例 2.1.2】
関数uniform(a, b)の利用

4.2545703391020115
1.5466337032578283
2.288953219481663
5.55279703478826
5.641141861464073
3.3566213135226803
1.0364038087152534
1.2650179435017015
2.0516008196674926
1.6366362793814428
【例 2.1.3】
関数randint(a, b)の利用
→ 15 14 12 11 11 10 11 15 12 11 10 11 10 10 12 10 10 11 15 15
※実際に10も15も出るということが重要です
【例 2.1.4】
関数sample(リスト, 個数)の利用

['りんご', 'みかん', 'なし']
['みかん', 'なし', 'イチゴ']
['かき', 'みかん', 'りんご']
['かき', 'イチゴ', 'りんご']
['なし', 'みかん', 'りんご']
(重複なく3個ずつの標本が抽出される)

(2) 日時情報:datetimeモジュールの利用

datetime.pyは/libに格納されており,pathが通っているので,ファイル名(モジュール名)を書けばインポートできます.
• datetimeモジュールには,例えば次のようなプロパティとメソッドがあります.(他にもあります.)
year, month, day, hour, minute, second
date(), weekday(), today(), now()
【例 2.2.1】
→ 2019 3 26
※各パソコンの設定に従って,年 月 日になります.
※パソコンの設定がズレていれば,そのズレた年月日になります.
【例 2.2.2】
→ 2019 3 26
(各々,時 分 秒になります)
【例 2.2.3】

2019-03-26年月日をハイフンでつないだ文字列
2019-03-26 07:31:36.385937年-月-日 時:分:秒.マイクロ秒
1月〜日を0〜6の数字で返します→(*)
Tue(*)→火
※週の曜日を月〜日とするか日〜土とするか,日本国内でも両方とも使う.アメリカ映画で「よい週末を!」などと挨拶するのは,土日が週末の型の反映かも

(3) 数学:mathモジュールの利用

• 数学関係のモジュールは,複素数を扱わないmathモジュールと複素数を扱うcmathモジュールに分かれています.
• mathモジュールには,例えば次のようなプロパティとメソッドがあります.(他にもあります.)
pi, e
sqrt(x),pow(x, y),
sin(x), cos(x), tan(x), degrees(x), radians(x),
exp(x), log(x, base), log10(x),
factorial(x), gcd(a, b)
【例 2.3.1】
→ 3.141592653589793 2.718281828459045
(この形でインポートした場合は,math.xxxの形でプロパティを参照する)
【例 2.3.2】
1.4142135623730951 1.7320508075688772 2.6457513110645907
の値
8.0 1.2599210498948732 6.309573444801933
の値
1j 3.141592653589793j
の値
【例 2.3.3】
29.999999999999996 0.49999999999999994 0.7071067811865476
を度に直した値,の値
【例 2.3.4】
5040 #の値
6 36 12,18の最大公約数,最小公倍数は2数の積/最大公約数で求まる
○== メニューに戻る ==