(python番外編)pythonの言語仕様としての優れた点

おはようございます。mobazouです。pythonの選定にあたり自分は言語仕様については特に考慮せず、ライブラリの豊富さから選びましたが、書いているうちにその言語仕様としての面白さに気が付きました。今回は番外編としてpythonの言語仕様としての優れた点について触れていきたいと思います。

だらだらと適当に書ける(逐次型、関数・クラスもだらだらと)

 pythonを書いていて思ったのが、言語仕様もあまり知らずにだらだらと書いていて大丈夫なのか、というところです。逆にだらだらと書いているにもかかわらず、関数記述やクラス記述にしていけるというところが実は優れている点、さらにはそんなにだらだらと書いていても、言語仕様の制約をもとに構造的に見やすく書けてしまうというのだ、というところが優れている点のように思いました。
 以降は、そのような観点で言語仕様について語っていきたいと思います。

ライブラリ(モジュール)のインポートが簡単

ここはそんなに他の言語と変わりないのかなと思いつつも、記述は簡潔です。インストールしたパッケージ内のライブラリを使用するために宣言します。ちなみにpythonの場合「ライブラリ」という用語は無く、モジュールと呼ぶようです。

import モジュール名 
from モジュール名 import オブジェクト(関数、変数またはクラス)名 

上記でfromとした場合は、全てのオブジェクトを実装せずに一部のオブジェクトだけを実装できるため、実行ファイルなどを軽くすることができます。
ちなみにモジュール内で使用可能なオブジェクトは以下で調べることができるようです。

dir(モジュール名)

型宣言しない

pythonの変数は型宣言をしません。明示的に示すために型宣言もできるようですが、どのような値も受け入れるため人間の理解のため以外に余り意味はないようです。逆に入力値の妥当性をどのように検証するのかについては実装側に委ねられているのかもしれません。ここら辺は課題として置いておきたいと思います。

タブに意味がある(コードの形が自然に整う)

これは驚きでした。書いたコードがどうも動かないと思ったらpythonから「お前のタブ付けがおかしいよ」と言われてしまいました。だらだらと書くといいましたが、逆にタブはしっかりつける、処理の階層構造は明確に書くということは求められています。
・繰り返し処理
・関数
・クラス
などについては、行の最後に:をつけ、その制御の範囲は「タブ」をつけで段を落として明示することになります(C言語などでは見苦しい{}などがありますがそれがありません)。この仕様により誰もが同じ構造でコードを書くことになるため、シンプルで非常に見やすいものになっています。
以下は簡単なコードの例です。
■ファイル名:person.py

#======= #クラス定義 
#=======
class Person:
    def __int__(self, name, age); #selfは自身のインスタンス 、引数は2番目から
        print('person')
        self.name = name
        self.age = age
    def show(self)
        print('person.show')
        print('%s %d' % (self.name,self.age)
   

■ファイル名:mobazou.py

#======= #呼び出し側 
#=======
from person import Person 

p1 = Person('mobazou' 27)
p1.show()

これらファイルを作成して、python mobazou.pyで名前と年齢を表示するプログラムが動きます(年齢は架空のものになりますw)

pythonの言語仕様

以上がpythonの優れた点ということですが、その言語仕様についてはこちらになります。その他のバージョンの仕様についてもプルダウンで選ぶことができます。

■python Ver3.6 言語仕様

いかがでしたでしょうか。この記事がお役に立ちましたら「ハートボタン」「フォロー」「サポート」「コメント」での応援よろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?