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

Cách lấy danh sách tên tham số trong hàm Python

Dùng inspect.getfullargspec() (Python 3) hoặc inspect.signature() (khuyên dùng).

inspect.getfullargspec()

import inspect

def aMethod(arg1, arg2):
    pass

def foo(a, b, c=4, *arglist, **keywords):
    pass

print(inspect.getfullargspec(aMethod))
# FullArgSpec(args=['arg1', 'arg2'], varargs=None, varkw=None, defaults=None, ...)

print(inspect.getfullargspec(foo))
# FullArgSpec(args=['a', 'b', 'c'], varargs='arglist', varkw='keywords', defaults=(4,), ...)

inspect.signature() (Modern, Python 3.3+)

sig = inspect.signature(foo)
print(list(sig.parameters.keys()))  # ['a', 'b', 'c', 'arglist', 'keywords']

for name, param in sig.parameters.items():
    print(f"{name}: kind={param.kind}, default={param.default}, annotation={param.annotation}")

Parameter kinds

  • POSITIONAL_ONLY: Chỉ positional (trước /).
  • POSITIONAL_OR_KEYWORD: Thường.
  • KEYWORD_ONLY: Chỉ keyword (sau * hoặc *args).
  • VAR_POSITIONAL: *args.
  • VAR_KEYWORD: **kwargs.

Khuyên dùng signature() vì API giàu hơn, hỗ trợ type hints, parameter kinds.