bs.fukufuki

bookshelf of fukufuki 留学、英語、物語、よしなしごと

(抜書)Dive into Python3 第1章

初めてのPythonプログラム - Dive Into Python 3 日本語版

Pythonでは、どんなものに対しても明示的にデータ型を指定することは決してない。代入した値に基づいて、Pythonが内部的にデータ型を追跡するのだ。

2番目の引数a_kilobyte_is_1024_bytesには、デフォルト値としてTrueが割り当てられている。これは、この引数がオプションだということを意味している。つまり、この関数は、この引数を与えなくとも呼び出すことができ、その場合には第二引数にTrueが渡されたものとPythonは解釈するのだ。

引数リストを左から右へ読んだときに名前付き引数が現れたら、それ以降の引数には必ず名前を付けなければならない

三重クォートは複数行文字列を表す。

Pythonではあらゆるものがオブジェクトであり、すべてのオブジェクトは属性とメソッドを持つことができる。すべての関数は組み込み属性のdocを持っており、これはその関数のソースコード上に定義されたdocstring を返す。sysモジュールは(他の属性に混じって)pathという属性を持つオブジェクトだ。その他も同じだ。

全てのオブジェクトがサブクラス化できるわけではないが、それを変数に代入することができ、関数の引数として渡すことができるという意味では、すべてがオブジェクトなのだ。

インデントは必ずしも4個のスペースである必要はなく、空白の数に一貫性がありさえすればよい。次にインデントされていない行が現れたら、それが関数の終了を示す印となる。

変数multipleの宣言はどこにも行なっておらず、単にmultipleに値を代入しているだけだ。これで問題ない。Pythonはそうできるようになっているのだ。

Pythonにおけるすべての名前: 変数名・関数名・クラス名・モジュール名・例外名では大文字と小文字が区別される。

まず、モジュールはオブジェクトであり、すべてのモジュールはnameという組み込みの属性を持っている。モジュールのnameの値は、そのモジュールをどのように使っているかに応じて決まる。そのモジュールを import した場合は、nameはモジュールのファイル名からディレクトリ名や拡張子を取り除いたものになる。

しかしモジュールは、スタンドアローンのプログラムとして直接実行することもできる。この場合にはnameは特別なデフォルト値の"main"になる。Pythonはこの if 文を評価し、その式が真だということを知り、ifのコードブロックを実行する。この例では、2つの値が表示される。

※題材にされているプログラムでは、モジュールがスタンドアロンのプログラムとして実行されているか確認するためにこのif name==main が用いられている。