LoginSignup
0
0

More than 1 year has passed since last update.

Pythonの関数名を強調表示し、ログを見やすくする

Last updated at Posted at 2021-09-22

大規模なプログラムの開発をしていると関数の数が増えて複雑さも増すため、どこからどの関数が呼ばれてどんな処理をしているのか、分かりづらくなってきます。inspectモジュールのcurrentframeを使って工夫すると関数名やクラス名を強調表示し、ログを見やすくすることができます。

サンプルコード

import inspect

def add(a, b):
    # 関数名表示(start)-------------------------------
    func_name = inspect.currentframe().f_code.co_name
    print('\n' + '-' * len(func_name))
    print(func_name)
    print('-' * len(func_name))
    # -----------------------------------------------
    print('hello')
    c = a + b
    print('a={0},b={1},c={2}'.format(a, b, c))
    # 関数名表示(end)---------------------------------
    func_name_end = func_name  + '(end)'
    print('-' * len(func_name_end))
    print(func_name_end)
    print('-' * len(func_name_end) + '\n')
    # -----------------------------------------------

def multiply(a, b):
    # 関数名表示(start)-------------------------------
    func_name = inspect.currentframe().f_code.co_name
    print('\n' + '-' * len(func_name))
    print(func_name)
    print('-' * len(func_name))
    # -----------------------------------------------
    print('hello')
    c = a
    print('a={0},b={1},c={2}'.format(a, b, c))
    # 関数名表示(end)---------------------------------
    func_name_end = func_name  + '(end)'
    print('-' * len(func_name_end))
    print(func_name_end)
    print('-' * len(func_name_end) + '\n')
    # -----------------------------------------------

if __name__ == '__main__':
    add(1, 2)
    multiply(1, 2)

実行結果

---
add
---
hello
a=1,b=2,c=3
--------
add(end)
--------


--------
multiply
--------
hello
a=1,b=2,c=1
-------------
multiply(end)
-------------

この規模だとあまり見やすい!って感じでもないですね。飾り付け等、使い方にもう少し工夫の余地がありそうです。inspectモジュールの他の機能についても調べてみようと思います。

0
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
0
0