Получить количество обязательных и необязательных аргументов в функциях - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу получить количество обязательных аргументов и не.Я был бы очень рад, если бы кто-нибудь мог мне помочь, я как бы застрял здесь.

Я пытался следовать, я не знаю, является ли это правильным путем для этого.

from inspect import signature

def Test(X, Y = 4):
print(X,Y)

R = str(signature(Test))
cu = ""
for i in R:
    if i.isalpha():
        cu = "".join([cu,i])
print(len(cu))
#Output: 2 (I would like to have something like req_Arg = 1, non_req_Arg = 1)

Я использую py 3.0

Спасибо за предложения заранее.

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете получить тип параметра и узнать, имеет ли он значение по умолчанию, перебрав inspect.signature(Test).parameters.values():

>>> for param in inspect.signature(Test).parameters.values():
...     print(param.kind, param.default)
...
POSITIONAL_OR_KEYWORD <class 'inspect._empty'>
POSITIONAL_OR_KEYWORD 4

(https://docs.python.org/3.4/library/inspect.html#inspect.Parameter)

Это было бы относительно тривиальночтобы перевести это в вывод, который вы ищете (оставив упражнение на ваше усмотрение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...