1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】triggon(if不要の分岐ライブラリ)でどれだけコードを短くできるか比較してみた

Last updated at Posted at 2025-07-22

自作ライブラリ triggon を使うことで、どのくらいコードが削減できるのか調べてみました!
↓ ライブラリの概要は前回記事で紹介しています
If文いらず!Pythonで値や処理を自動で切り替える軽量ライブラリ

以下の2つの例で比較してみました👇


➀ 引数によってテキストを変更する

if 文の場合

def sample(y: int):
    x = 7

    if x > y:
        fmt = "より大きい"
    elif x == y:
        fmt = "と等しい"
    else:
        fmt = "より小さい"

    print(f"x は y {fmt}")

sample(10) # x は y より小さい
sample(7)  # x は y と等しい
sample(0)  # x は y より大きい

triggonを使った場合

tg = Triggon({"A": "より大きい", "B": "と等しい"})

def sample(y: int):
    x = 7

    tg.set_trigger("A", cond="x > y")
    tg.set_trigger("B", cond="x == y")

    fmt = tg.switch_lit(["A", "B"], org="より小さい")

    print(f"x は y {fmt}")

sample(10) # x は y より小さい
sample(7)  # x は y と等しい
sample(0)  # x は y より大きい

コード量は2行しか変わりませんが、関数内のコード量では3行削減できています!

➁ ユーザー情報を削除・復元する

このサンプルコードはtriggonを使って書いたコードをAIにif文のみで書いてもらったものです!

if 文の場合 (AI作成)

# (この ifバージョンはAIが自動生成したものです)

@dataclass
class User:
    name: str = "太郎"
    age: int = 25
    _original_name: str = None
    _original_age: int = None
    _reverted: bool = False  # 元に戻したかどうかのフラグ

    def apply_deletion(self, delete: bool):
        if delete and not self._reverted:
            # まだ元に戻していない場合、元の値を保存して削除
            self._original_name = self.name
            self._original_age = self.age
            self.name = None
            self.age = None
        elif not delete and not self._reverted:
            # 復元要求がない場合は何もしない
            pass
        elif delete and self._reverted:
            # すでに復元済みならスキップ
            pass

    def revert(self):
        if self._original_name is not None and self._original_age is not None:
            # 元の値を復元し、revertedフラグを更新
            self.name = self._original_name
            self.age = self._original_age
            self._reverted = True

user = User()

user.apply_deletion(False)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: 太郎, age: 25

user.apply_deletion(True)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: None, age: None

user.revert()
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: 太郎, age: 25

user.apply_deletion(True)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: 太郎, age: 25

triggonを使った場合

tg = Triggon("del", None)

@dataclass
class User:
    name: str = "太郎"
    age: int = 25

    def apply_deletion(self, delete: bool):
        tg.switch_var("del", [self.name, self.age])
        tg.set_trigger("del", cond="delete")

user = User()

user.apply_deletion(False)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: 太郎, age: 25

user.apply_deletion(True)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: None, age: None

# 永続的に元の値に切り替える
tg.revert("del", disable=True)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: 太郎, age: 25

user.apply_deletion(True)
print(f"user name: {user.name}, age: {user.age}")  # 出力: user name: 太郎, age: 25

コード量はほぼ半分削減されています!


シンプルな構造ではifで十分ですが、元の値に戻したり、複数の値を同時に切り替える場面では、triggonはとても役に立ちます!

そして、triggonは最近v0.1.0b4にアップデートされました!
不具合が多かった旧バージョンをご利用の方は、
ぜひ最新のバージョンにアップグレードしてください!
そして、次回のアップデートではトリガーをタイマーで制御できる機能を追加予定です。

↓ READMEはこちら
README

🔗 GitHub -> tsuruko12/triggon
🔗 X -> @12tsuruko

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?