一度質問した内容ですが、質問の編集が出来なかった為、改めての質問
pythonで関数名や引数を取得する方法が知りたいです。
特に知りたいのが関数名であり、インターネット上にあるプログラムを採用していますが、、
任意の文字:'123abc'
条件 :'[0-9]+'
出力文字 :{'a':'123','s':'abc'}
python
1import re 2 3def unit(a): 4 def m(s): 5 ans = {'a':a,'s':s} 6 return ans 7 return m 8 9def bind(m,f): 10 def mf(s): 11 r = m(s) 12 r = r and f(r['a'])(r['s']) 13 return r 14 return mf 15 16def newParser(function): 17 return bind(function,unit) 18 19def pattern(e): 20 def pattern_function(s): 21 #今回の場合、e:[0-9]+,s:'123abc' 22 ans = {'a':'', 's':''} 23 n = len(re.match("\s*",s)[0]) 24 s = s[n:] 25 #sが文字123abcの前に空白があれば削除する(s:'123abc') 26 r = re.match(e,s)[0] 27 #r:'123' 28 if(r): 29 ans['a'] = r 30 ans['s'] = s[len(r):] 31 return ans 32 #ans:{'a':'123','s':'abc'} 33 print(newParser(pattern_function)) 34 return newParser(pattern_function) 35 36 37num = pattern("[0-9]+") 38print(num("123abc")) 39 40def hogeFunction(): 41 f = inspect.currentframe() 42 print(f) 43 return inspect.getframeinfo(f)[2] 44 45print(hogeFunction())
実行結果
<function bind.<locals>.mf at 0x000002BEFE3B8268>
{'a': '123', 's': 'abc'}
質問内容
上記のプログラムを実行すると、上記の実行結果になるのですが、
print(newParser(pattern_function))
を実行すると、
<function bind.<locals>.mf at 0x000002BEFE3B8268>
となるのですが、これを
{'a': '123', 's': 'abc'}
などの実行結果で表示する方法はあるのでしょうか?
もちろん、unit関数内やpattern_function関数内などをprintすれば実行結果は確認できますが
print(newParser(pattern_function))
を行った結果を出したいです。
追記
関数名の取得方法を教えて頂きありがとうございます。
余計に分からなく質問ですが、
関数の引数に「num = pattern("[0-9]+")」などを「**kwargs」などで配列に入れ、
その中から、"pattern("[0-9]+")"の状態を作ることは可能ですか?
プログラムを受けて
文字でプログラムを記載し、
実行も行うような形で、、
分かりにくいですかね?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/10 08:24
2019/08/10 11:11
退会済みユーザー
2019/08/12 07:35