Pythonをさわってみる

以前、Kotlinをさわっての記事を記載しましたが、AIが話題になっておりそれに伴いよく耳にする言語であるPythonを今回はさわっていきたいと思います。その中から私がこの機能は他で見たことないなと思ったものを抜粋して共有したいと思います

前回のKotlinの記事はこちら

そもそもPythonってどんな言語?

特徴としては以下のサイトでも記載があるように、シンプルで覚えることが少ない構文、幅広い用途に使える外部ライブラリが豊富などといった特徴があるそうです
詳しくは以下のサイトを参照してください

引数をまとめて扱う

関数の引数の先頭に*(アスタリスク)を付けるとタプルとして扱われ、引数の先頭に**(アスタリスク・アスタリスク)を付けると辞書として扱われるようです
タプルは他言語で聞いたことがないのでPython独自のものなのかなと思います(私が知らないだけかもしれませんが…)
辞書もアスタリスクが2つ付くというのもC++をさわったことのある私からするとポインターのポインターに見えてちょっと違和感があります

def showTuple(*a): # 引数 a はタプル
    print(a)
    
    tuple = " ".join(a)
    tuple += "!"
    
    print(tuple)
      
showTuple("Only", "One", "Tuple", "Hoge")

# 実行結果
('Only', 'One', 'Tuple', 'Hoge')
Only One Tuple Hoge!
def showDic(**a): # 引数 a は辞書
    print(a)
    
showDic(Only=3, One=4, dic=10, hoge=5)

# 実行結果
{'Only': 3, 'One': 4, 'dic': 10, 'hoge': 5}

特殊なクラスメソッド

クラス内に特殊なメソッドが設定できるようでまず初めに「__str__」は、str関数の( )内にインスタンスを渡した際に文字列が返ってきて、次に「__call__」は、インスタンスを関数のように扱うことができるようです。これもPython独自のモノかなと思っています。

class StrMethod:
    def __str__(self):
        return "__str__ Method Call."
    
str1 = StrMethod()
print(str(str1)) # str()関数にインスタンスを渡す

# 実行結果
__str__ Method Call.
class CallMethod:
    def __call__(self, str1, str2):
        return str1*5 + str2*3

call1 = CallMethod()
print(call1("Hoge", "Huga")) # call1を関数のように扱える
タイトルとURLをコピーしました