DAILY JOURNAL

Python

117記事の記録。

2025年7月

  1. 幅優先探索で最短経路を求める

    前回は、プレーンな幅優先探索を行なった。 https://ki-hi-ro.com/%e5%b9%85%e5%84%aa%e5%85%88%e6%8e%a2%e7%b4%a2%e3%82%92%e3%83%9e%e3%82%b9%e3%82%bf%e3%83%bc%e3%81%99%e3%82%8b/ 今回やりたいのは、最短経路探索。 ブラックボックスをいかに使いこなすか 人体の仕組みをはじめとして、ブラックボックスになっていることは多い。 その中身を知ろうとすると、膨大な時間がかかる。 プログラミングにおける関数も中身を知らなくても、入力(引数)と出力(戻り値)だけ意識すれば、うまく組み合わせることで、プログラムを作成していける。 最短経路検索の関数…

    Pythonで幅優先探索(BFS)の仕組みを理解する

    上長から、幅優先探索の第一引数に渡すデータを作成してほしいと依頼された。 しかし、その場ですぐに対応することができなかった。 エンジニアとしての実力が可視化された瞬間だった。 実力不足を痛感できる環境にいることを前向きに捉え、ここからスキルアップしていきたい。 手始めに、Pythonで幅優先探索を実装し、その処理の流れを一つずつ確認する。 幅優先探索(BFS)とは 幅優先探索(Breadth-First Search、BFS)は、グラフやツリー構造を探索するアルゴリズムの一つ。 スタート地点に近いノードから、横方向へ広がるように順番に探索していく。 主な特徴は次のとおり。 重みのないグラフでは、最短経路を求めるために利用できる スタート地点に近いノード…

  2. ライブラリのインストールとアンインストール

    Pythonの仮想環境「venv」で必要なライブラリをインストールしたりアンインストールしたりする方法について書いていく。 pipが使えるかどうか確認 (.venv) Mac:eki-api shibatahiroshitaka$ pip3 --version pip 20.2.3 from /Users/shibatahiroshitaka/Downloads/python/eki-api/.venv/lib/python3.8/site-packages/pip (python 3.8) 直接指定してインストール pip install ライブラリ名で必要なライブラリをインストールできる。 (.venv) Mac:eki-api shibatahi…

    Pythonの仮想環境「venv」の作成・起動・無効化・再作成

    Pythonの仮想環境「venv」を作成 → 起動 → 無効化する方法をまとめる。 インタープリターを設定する(どのPythonにコードを読ませるか選択する)方法についても触れる。 venvとは venv は、プロジェクトごとにPythonの実行環境やライブラリを分離するための仕組みです。 仮想環境を利用することで、プロジェクトごとに異なるバージョンのライブラリを管理でき、依存関係の衝突を防げます。 仮想環境を作成する 仮想環境を作成したいディレクトリで、以下のコマンドを入力する。 python -m venv venv 最後の venv は、作成する仮想環境のディレクトリ名です。 .venv という名前にする場合は、次のように入力します。 pytho…

2025年4月

2025年3月

  1. 他のファイルで定義した定数を使用する

    他のファイルで定義した定数を使用するサンプルを作成して、この記事で解説していこう。 サンプルフォルダの構成 main.py # main.py from config.settings import DB_HOST, DB_PORT, DEBUG_MODE def main(): print(f"データベース接続先: {DB_HOST}:{DB_PORT}") if DEBUG_MODE: print("デバッグモードで起動しています。") if __name__ == "__main__": main() config/settings.py # config/settings.py DB_HOST = "localhost" DB_PORT = 5…

    別ファイルで定義されているクラスで定義されている関数を使用する方法

    先週、PythonETLを作成していて、違うファイルで定義した関数を使用したいときに少し戸惑った。 クラスの中にその関数を定義して、そのクラスをimportして、インスタンス生成して、そのインスタンスから呼び出せばいいと思うので、サンプルを作成していく。 フォルダ構成 以下のようなフォルダ構成。 main.py utils/helperモジュールから、DataTransformerクラスを読み込んでいる。メイン関数では、sample_dataというリストを定義して、DataTransformerクラスのインスタンスを生成して、変数transformerに代入している(引数はFruitTransformer)。transformerインスタンスからtra…

    親クラスのコンストラクタをそのままsuper()して引き継ぐ

    作成中のPythonETLで、社内共通テンプレートのソースコードを継承して、子クラスで追加の処理を書いていく必要があった。 子クラスの初期化時に、親クラスの初期化処理を引き継ぐ必要があったので、そのサンプルについて書いていく。 サンプルのソースコード overrideディレクトリに、parent.pyとchild.pyを作成した。 parent.py # 親クラス(SuperClass) class Animal: def __init__(self, name): self.name = name print(f"Animal constructor called: {self.name}") child.py from parent import…