1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4import re
5
6def find_functions(src):
7 # 関数定義のパターン
8 pattern = r'^\W*def\W+([a-zA-Z0-9_]+)\((.*)\):'
9 # ファイルを全て読み込む
10 with open(src, 'r') as f:
11 text = f.read()
12 # ファイルから読み込んだ文字列の中から関数定義を検索
13 for m in re.finditer(pattern, text, re.MULTILINE):
14 groups = m.groups()
15 if len(groups) >= 1:
16 # 関数名
17 name = groups[0]
18 # 引数リスト
19 args = groups[1].split(', ')
20 while args.count('') > 0:
21 args.remove('')
22 narg = len(args)
23 print('found function named {} with {} argument(s)'.format(name, narg))
24
25
26def test_func1():
27 pass
28
29
30def test_func2(x, y):
31 pass
32
33
34if __name__ == '__main__':
35 # __file__ はこのファイルの名前
36 find_functions(__file__)