学習者言語の分析(基礎)第5回 1

  • 5.1 パッケージ
  • 5.2 関数の定義
  • 5.3 クラス

5.1 パッケージ¶

  • 何もimportすることなく使用できるlen()などは組み込み(ビルトイン)関数と呼ばれ、デフォルトで使えるものでした。
  • デフォルトではない関数を呼び出して使えるようにするには以下のように書きます。
  • また、関数が集まったものをパッケージと呼びます。
In [1]:
# numpyをnpという名前でimportする(これでnumpy以下の関数はすべて使える)
import numpy as np

# とするとnp.xxでnumpyの関数が使えるようになる
np.sqrt(2)
Out[1]:
1.4142135623730951
In [2]:
# 特定の関数をimportするとき
from numpy.random import *

# 乱数の発生
L = rand(100) 
# import numpy as npと書いてたら
# L = np.random.rand(100)

5.2 関数の定義¶

  • 自分で関数を定義することができます。
In [3]:
# 関数の書き方
def average(X):
    n = len(X)
    s = sum(L)
    a = s /n
    return a
In [4]:
L = [5.1,2.2,9.0,4.4]
average(L)
Out[4]:
5.175000000000001

5.3 クラス¶

  • ここまで扱ってきた数値、文字列、リストには「クラス」という設計図から作られたオブジェクト(変数)です。
  • オブジェクトとはデータとメソッドを持つものと言えます。
In [5]:
# 以下の文字列型のオブジェクトには"YOUNGER GENERATION"というデータが保存され、
# デフォルトでlower()やlen()などのメソッドを持っています。

a = "YOUNGER GENERATION"

a.lower()
Out[5]:
'younger generation'
  • この授業ではクラスを自分で定義できるようになることは要求しませんが、クラスを使用するのでクラスがどういうものなのかは理解しておいてください。
  • 以下では"MyClass"という名前のクラスを定義しています。
In [6]:
class MyClass:
    def __init__(self, L):
        self.param = L
        
    def multiply(self,x):
        M = []
        for i in self.param:
            M.append(x * i)
        return M
  • メソッドはdefで示します。
  • 最初のメソッド(def init)はこのクラスを初期化します。
  • selfの後ろに初期化(オブジェクトを作成する)の際に必要とする引数を書きます。
  • selfは「このクラスの」みたいな意味で、self.xxxのようにこのクラス内で使用する(保存する)変数を宣言します。
  • この例では初期化の際にLという引数が必須であることを示しています。
  • self.paramはこのクラスのparamという変数に引数として読み込んだLを代入しています。
  • 2番以降のdef ... でメソッドを定義します。
  • 以下ではこの"MyClass"を呼び出してそのメソッドを使用しています。
In [7]:
# クラスに保存するためのデータ
L = [1,2,3,4,5]

# 上で作ったクラスのオブジェクトを作成する
a = MyClass(L)

# メソッドを呼び出す
a.multiply(5)
Out[7]:
[5, 10, 15, 20, 25]