Sử dụng module inspect để introspect signature hàm.
Ví dụ
import inspect
def aMethod1(arg1, arg2):
pass
def aMethod2(arg1, arg2, arg3, arg4, arg5):
pass
# Lấy argspec
spec1 = inspect.getfullargspec(aMethod1)
spec2 = inspect.getfullargspec(aMethod2)
print("aMethod1 args:", spec1.args) # ['arg1', 'arg2']
print("aMethod1 count:", len(spec1.args)) # 2
print("aMethod2 args:", spec2.args) # ['arg1', 'arg2', 'arg3', 'arg4', 'arg5']
print("aMethod2 count:", len(spec2.args)) # 5
inspect.getfullargspec() trả về NamedTuple:
args: list tên positional parametersvarargs: tên *args (hoặc None)varkw: tên **kwargs (hoặc None)defaults: tuple giá trị mặc địnhkwonlyargs: keyword-only argumentsannotations: type hints dict
Python 3.3+: inspect.signature() (hiện đại hơn)
sig = inspect.signature(aMethod2)
print(list(sig.parameters.keys())) # ['arg1', 'arg2', 'arg3', 'arg4', 'arg5']
print(len(sig.parameters)) # 5
signature() trả về object Signature giàu thông tin hơn, hỗ trợ Parameter kinds (POSITIONAL_ONLY, KEYWORD_ONLY...).