結論
関数名.__code__.co_varnames[:関数名.__code__.co_argcount]
とすると取得できます
実例
以下のようなテストコードを用意しました
test
def fnc3(a, b, c):
d = 0
return a + b + c
arg_names = fnc3.__code__.co_varnames[:fnc3.__code__.co_argcount]
print(arg_names)
$ python test.py
('a', 'b', 'c')
きちんと取得できていますね
ちなみに
__code__.co_varnames
は単にその関数内で使用されている変数を列挙するだけなので
arg_names = fnc3.__code__.co_varnames
とすると、関数内で使用されているd
くんも取得してしまいます
$ python test.py
('a', 'b', 'c', 'd')
余談
python2
ではinspect.getargspec
python3
ではinspect.signature
というものを本来使って情報を取得するらしい
しかし、こちらのほうが単純なので、今後はこちらを使用する