楽しい楽しいお勉強日記

IT系の勉強や読書記録を書きます。勉強大好き!(自己暗示)

パコチューを読んでいる 6.モジュール編 Python公式チュートリアル

 

たわ言

Pythonの公式チュートリアル、略してパコチュー(流行れ)

 

にるです。

前から思ってたんだけど公式ドキュメント横文字多すぎて初学者だと意味分からなくない?訳してあるから仕方ないんだけど。

Rubyみたいに日本人が作った言語なら分かりやすそうな解説いっぱいありそうだな...。

  

6. モジュール

今回はモジュールってやつを読みました!

ここを自分なりに理解したら今までのモヤモヤが晴れた感じしました!

docs.python.org

モジュールってのは関数とか定義してある.pyファイルって事なのね。

(モジュール=ファイルって事でいいのかな)

もっと言うとimportして別ファイルから呼び出せるファイルのことだったのね。

 

defでfibとfib2って関数が定義されてるfibo.pyってファイルがある。

ここでimport fiboってやればfibとfib2を使えるようになると、ふむふむ。

 

fibo.py↓ 関数fibとfib2を定義してる。

# Fibonacci numbers module

def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()

def fib2(n):   # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result
>>>
import fibo

 

importでfiboファイルを呼び出す。↓

>>>マークはターミナルやコマンドプロンプトpythonモードに入ったときの証(インタプリタ?)

>>> import fibo

 

↓fibo.fib(1000)は、ファイル名.関数名(引数)。

importしてればこうやって自分で作った違うファイルに入れた関数を呼び出して使う事が出来るよってこと。

>>> fibo.fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'

fibo.__name__???

__name__っていうpython標準の関数(組み込み関数)かな??

返り値を見るとファイル名を返してるっぽい。

 

 

↓またいちいちファイル名.関数名(引数)ってするのめんどくさければ、変数に代入して使うことも出来るよ

>>> fib = fibo.fib
>>> fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

 

 

 

6.1. 別のインポートのやり方

さっきimport ファイル名で持ってこれるってやったんだけど、

このやり方だと使うときは必ずファイル名.関数名(引数)って具合に関数名も明示しないといけないのね。

初めからこのファイルのこの関数使う!!!って分かってる時は↓で指定して読み込めるみたいよ。

>>> from fibo import fib, fib2
>>> fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

from ファイル名 import 関数名って感じ。↑

 

 

ファイル内の関数とかを全部読み込んどくならこれ↓

from ファイル名 import *←アスタリスク

>>> from fibo import *
>>> fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

↑このやり方は可読性が乏しいコードになるからやめた方がいいらしいよ。

(解説読んでたら「モジュールで定義されている名前を全て import する」って表記があって、importするのはひょっとして関数だけじゃないのか?って思ったり...)

 

 

あとは関数名を自分の使いやすいように変えられる方法もあります。↓

from ファイル名 import 関数名 as 好きな名前をどうぞ←下の例だとfibonacci

>>> from fibo import fib as fibonacci
>>> fibonacci(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

おしまい!

 

次回はif __name__ == "__main__"を頑張るぞ!

 

(公式チュートリアルフィボナッチ数列が題材にされてるんだけど見る度にプリズンブレイクを思い出す...。わかる人いる??)