BJCRobotさんとのやり取りを眺めて試しに作ってみたら、
こう書けば質問の本来の意図したい挙動なのかなと思うのが出来たので投稿します。
python
1import inspect
2
3sunny = [1,3,4,5,6,8,10,17,20,25,27,28]
4rainy = [2,7,11,12,14,15,19,21,22,23,24]
5cloudy = [9,13,16,18,26,29,30]
6
7
8
9def Wforecast(weather):
10 frame = inspect.currentframe()
11 stack = inspect.getouterframes(frame)
12 val_name = stack[1].code_context[0].split('(')[1].split(')')[0]
13 print("In this month, " + val_name + " days were below")
14 print(weather)
15
16Wforecast(sunny)
挙動の整理
自身の整理を兼ねて「こんな挙動でした」というのをまとめてみると。
frame = inspect.currentframe()
stack = inspect.getouterframes(frame)
この辺で呼び出し情報が取れます。
print(stack)
[
FrameInfo(frame=<frame object at 0x10c4dce10>, filename='teratail.py', lineno=11, function='Wforecast', code_context=[' stack = inspect.getouterframes(frame)\n'], index=0),
FrameInfo(frame=<frame object at 0x10c4dc828>, filename='teratail.py', lineno=18, function='<module>', code_context=['Wforecast(sunny)\n'], index=0)
]
実引数の名前が分かるところまで遡れられれば、code_context
のテキストを加工してどうにかできないことはなさそう?という感じになりました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/09 07:57