EeBlog(テクニカルブログ)

AI(人工知能)実践 第3回 他言語経験者向けPython入門3

AI(人工知能)実践第3回です。
第1回から続いた、他言語経験者向けPython入門の最終回になります。
 

・クラスやメソッドについて

クラスについては、下記のように記載します。
class クラス名:
#処理

また、Pythonでは多重継承が可能であり、多重継承を行う場合は下記のように記載します。
class クラス名(継承1,継承2):
#処理

メソッドについては、下記のように記載します。
def メソッド名:
#処理

また、staticなメソッドを作成する場合は、メソッド定義の前に「@staticmethod」を記載します。
@staticmethod
def メソッド名:
#処理
 

・スコープについて

スコープについて、他言語経験者の型であればglobalやlocalについては問題ないかと思います。
Pythonでは、その二つに加えてnonlocalというものが存在します。
これは、例えばメソッド内で定義した変数をメソッドを抜けた後でも使える様にするものです。
また、通常通りで行けばlocalとして宣言される変数をglobal変数として宣言するといったことも可能です。

例:※global変数と同名のlocal変数が使われる場合

txt = 'hello'

def method():
    txt = 'hello world'

method()
print(txt)

実行結果:
hello

例:※ローカルにてglobal変数を使う場合

txt = 'hello'

def method():
    global txt
    txt = 'hello world'

method()
print(txt)

実行結果:
hello world

例:※nonelocalを用いて、メソッドの外側で定義された変数を使用する場合

txt = 'hello'

def outer():
    txt2 = txt
    def method():
        #以下の1行をコメントアウトすると、実行結果が変わる
        nonlocal txt2  
        txt2 = 'hello world'
    method()
    print(txt2)

outer()

実行結果:
hello world
 

・配列について

Pythonでは、リスト・タプル・ディクショナル(辞書)・セット(集合)があります。
タプルは不変なオブジェクトなので、要素の変更は出来ません。
タプル以外については要素の変更可能です。
リストとタプルは不変・可変かの違いのみと捉えて問題ないでしょう。
相互に変換するメソッドが提供されています。
ディクショナル(辞書)については、連想配列と言い替えた方が分かりやすいかもしれません。
使い方については、他言語と大きく変わりはありませんが、
配列同士を「+」記号で連結することが出来ます。

例:

array1 = (1, 2, 3, 4)
array2 = (5, 6, 7, 8)
array3 = array1 + array2
print(array3)

実行結果:
(1, 2, 3, 4, 5, 6, 7, 8)
 

・indexについて

Pythonでは、indexで使用する数字が配列の大きさを超えていたり、
マイナスであったりしても問題ありません。
また、「:」で区切ることでn~mまで、といった範囲の指定も可能です。

例:

array = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(array[1])
print(array[-1])
print(array[5:100])
print(array[5:])
print(array[:5])

実行結果:
2
10
(6, 7, 8, 9, 10)
(6, 7, 8, 9, 10)
(1, 2, 3, 4, 5)
 
以上で他言語経験者向けのPython入門編は終了します。
次回はPythonのNumpyモジュールについて触れていきます。