pythonの基本を勉強したのでまとめ

プログラミングPython

pythonの公式ページには、チュートリアルが存在します。そこにかいてあることを一通り手を動かしてやってみただけの内容です。
→https://docs.python.org/ja/3/tutorial/index.html

Anacondaにてpythonの環境を設定し、Eclipseにてソース記述・実行を行います

目次

  1. 環境の準備
  2. 制御構文
  3. 関数・ラムダ式
  4. リスト・リスト内包表記・タプル・集合型・辞書型
  5. モジュールとdir関数
  6. パッケージ
  7. 文字列の整形出力
  8. ファイルの読み書き
  9. 例外処理
  10. 変数のスコープについて
  11. クラスの基本
  12. クラスの継承
  13. 名前マングリング
  14. イテレーターとジェネレーター/ジェネレーター式
  15. 標準関数
    • OSへのインターフェイス
    • ファイルのコピーや移動の操作
    • ファイルのワイルドカード表記
    • 正規表現によるマッチングと置換
    • 平均、中央値、分散を計算する
    • 日付
    • 出力のフォーマット
    • 文字列テンプレート
    • ログ記録
    • 弱参照
    • 10進浮動小数演算について”

環境の準備

いくつかの手段がありますが、私は
・anacondaを使って、pythonをインストール
・コーディングや実行はEclipseで行う
といったスタイルです。

anacondaはpythonやpython用のライブラリのインストールなどを自動で行ってくれる便利ツールです。
そしてpython環境を複数作って、それを管理してくれます(仮想環境と呼ばれているっぽい)。

anacondaを以下からインストールします。
インストール後、アプリを起動してみれば、まぁ、なんとなくわかると思います(たぶん)
https://www.anaconda.com/distribution/
とりあえず、仮想環境を1つ作っておきます(作らなくてもいいけど、今後のことも考えて、とりあえず作る・・・w)。

eclipseは、eclipse本体をDLし、それにpyDevというプラグインをいれて、使います(ほかの方法もあるはず)。
pyDevをインストール後、pythonの環境のパスを入力します(以下の画像参照)

anacondaのインストールディレクトリ(私の環境では「E:\bin\Anaconda3」)の中に「envs」ディレクトリがあります。
その中にanacondaで作成したpythonの仮想環境名のディレクトリがあるはず(私の環境では「env1」というのを作った)。
そのディレクトリの中にある「python.exe」を、eclipseのpyDevの設定に、環境として設定してあげます。

これで、準備完了・・・のはず。
(環境を作ってから、結構時間がたってから作ったので、過不足あるかも)

制御構文

基本的な構文です。
ほかの言語と基本的に変わりありません。
ただ、pythonの基本思想である{}によるパースをやめて、その代わりインデントを使う・・・という点は多少の慣れが必要です。

関数・ラムダ式

関数の定義や、呼び出し方のサンプルです。
ラムダ式についても、ちょっとサンプルを書きました。

リスト・リスト内包表記・タプル・集合型・辞書型

リストは、よくあるあのリストです。
リスト内包表記はリスト型に対するループ処理を1行で書けるよ・・・!的なやつです。
タプルは一度セットすると変更できないリストのようなものです(たぶん)。
集合型は、あの集合論のやつです。
辞書型は、連想配列のことですね。

モジュールとdir関数

ほかのファイルに定義した関数などを、使うことができます(それをモジュールと言う・・・たぶんw)
別ファイルを使用するにはimportする必要があります。
ソースのコメントにも記載しましたが、サンプルでは、実行するpythonファイルと同じディレクトリ内に、「mod」というディレクトリを作成し、そこに「study4Module.py」ファイルを配置しています。

パッケージ

パッケージの主な目的は、人への提供・・・という観点らしい。
なにかしらの機能を1つのパッケージにまとめておいて、みんなに使ってもらうようにする時の、まとまりを定義する。

モジュールとパッケージの違いは、パッケージの場合、そのディレクトリに「__init__.py」を用意する。
これはパッケージ全体の初期化処理を記載する特別なファイル、かつ、このファイルがディレクトリにあると、このディレクトリはパッケージであると認識される。

今回作成したのは、以下の6ファイル。
pakディレクトリの中に「__init__.py」を作成していますので、これで「pak」というパッケージを定義しています。
そして、さらに「msg」ディレクトリの中にも「__init__.py」ディレクトリを定義していますので、「msg」というパッケージを定義しています(pakの中にあるので、「pak.msg」というパッケージになる)

そして、実行するのは「study6.py」というファイルです。
以下に、各ファイルの中を示します。
実行結果は「study6.py」の中の下に、コメント文で入れておきました(今回、あまり出力結果は重要ではありませんが)

文字列の整形出力

文字列を整形して出力する簡単な方法があるよ・・・というサンプル。

ファイルの読み書き

ファイルの書き込み・読み込みのサンプルです。
また、jsonの読み書きのサンプルも、ソースの後半にあります。

例外処理

pythonには、例外処理もあります。
else句を書けるのか特徴ですかね。

変数のスコープについて

今までのサンプルでは、てきとーにやってきましたが、変数スコープの概念がpythonにもちゃんとあります。
同じ名前の、グローバル変数など、外の世界の変数があった場合でも、特に指定しない限りは、ローカル変数のものを指す・・・というのが基本方針っぽいですね。

クラスの基本

クラス作成への第一歩、単純なクラスの記載方法です。

クラスの継承

多重継承のサンプルです。

名前マングリングについて

継承した場合、メンバ変数・メンバ関数が、自分が作成しているものと、継承したクラスがもっているものとで、名前が被るケースがあります。
不意にかぶってしまった場合の、思ってもいない挙動をしてしまうのを防ぐための機構が名前マングリングです。

サンプルを以下に示します(サンプル内のコメントに詳細を記載しました)

イテレーターとジェネレーター/ジェネレーター式

イテレーターについて、サンプルを示します。
イテレーターとの絡みで、ジェネレーター/ジェネレーター式についてサンプルを示します。
詳細はソースのコメントを参照。

標準関数

pythonの標準関数において、いくつかのサンプルを以下に示します。
ファイル出力する処理もあるので、実行の際は気を付けてください。