Skip to content

Python

hyperfine でコマンドのベンチマークを実行する

hyperfine を使うとコマンドのベンチマークを実行出来ます。 類似のツールに benchpoop があります。 poop は高機能なようですが、私の環境では動作させることが出来ませんでした。 今回は hyperfine を起動する手順まで、メモしておきます。 今回は Ubuntu 24.04 環境でテストしました。

CiscoConfParse 初期化時の INFO 表示を抑制する

以前に CiscoConfParse でインターフェイス情報を抽出する というメモを書きました。 CiscoConfParse は「Cisco 機器のコンフィグを構造的に扱うことが出来る」便利なライブラリです。 但し、ネット上にある古いサンプルの書き方では実行時に INFO が表示されることがあります。 今回はそれを抑制する方法をメモしておきます。

Python でデコレータを利用する

Python のデコレータ (decorator) は 公式ドキュメントの用語集 で以下のように定義されています。

Note

(デコレータ) 別の関数を返す関数で、通常、 @wrapper 構文で関数変換として適用されます。デコレータの一般的な利用例は、 classmethod() と staticmethod() です。

デコレータの文法はシンタックスシュガーです。次の2つの関数定義は意味的に同じものです:

def f(arg):
    ...
f = staticmethod(f)

@staticmethod
def f(arg):
    ...

同じ概念がクラスにも存在しますが、あまり使われません。デコレータについて詳しくは、 関数定義 および クラス定義 のドキュメントを参照してください。

つまり、デコレータの実態は「関数を受け取り、関数を返す関数」と言えます。 もう少し分かりやすく噛み砕くと「関数の処理内容を変更せず、関数に機能を追加出来る仕組み」とも言えます。

Python で文字列結合を f 文字列で実装する

Python で文字列を結合したり、フォーマットを指定するには str.format(args, *kwargs) を使う方法があります。 Python 3.6 からは フォーマット済み文字列リテラル、俗に言う「f 文字列」がサポートされ、より簡単に定義出来るようになりました。

以下は「文字列を結合して表示する」という目的を異なる方法で実装した例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
a = "apple"
b = "banana"

# format() を使った書き方
print("{} and {}".format(a, b))

# 文字列結合を使った書き方
print(a + " and " + b)

# f 文字列を使った書き方
print(f"{a} and {b}")

MkDocs をインストールする

静的サイトジェネレーターである MkDocs に関して、日本語の情報源としては Mebiusbox さんがお書きになっている MkDocsによるドキュメント作成 が最強なのでは無いかと思います。 余談ですが 「動かして学ぶ!Rust入門」の執筆 によると Mebiusbox さんは さんは 動かして学ぶ!Rust入門 の著者でもあるそうです (すごい)。

以前に HBFM (Markdown 拡張) を追加した MkDocs の Docker イメージ というメモを書きました。 このは ハートビーツ さんが作成されたプラグインを取り込んだ MkDocs の Docker イメージを利用する前提になっています。 今回は Docker コンテナは利用せず、ローカルに MkDocs をインストールする手順をメモしておきます。

pyATS の GUI である XPRESSO をインストールする

XPRESSO はネットワークテストの自動化ツールである pyATS にブラウザからアクセス可能な UI を提供します。 今回は XPRESSO のインストール手順をメモしておきます。 尚、タイムゾーンの指定など、設定に関しては省略しており、インストール手順までだけをメモしています。

openpyxl で複数範囲セルの外枠に罫線を設定する

Python から Excel を操作するライブラリは幾つか存在しますが、特に openpyxl が有名のように思います。 但し、現状の openpyxls には「複数範囲に対して、一括で外枠を定義する」ようなメソッドが無いようなので、サンプル実装をメモしておきます。 今回は以下を利用しました。

  • python 3.9.6
  • openpyxl 3.1.2

尚、罫線に限らない「書式全般の操作」については openpyxl 公式ドキュメントの Working with styles で言及されています。