Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách tìm số lượng tham số của hàm Python

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 parameters
  • varargs: tên *args (hoặc None)
  • varkw: tên **kwargs (hoặc None)
  • defaults: tuple giá trị mặc định
  • kwonlyargs: keyword-only arguments
  • annotations: 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...).