Как получить чистую сигнатуру функции в python, как видно из кодовой базы? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть следующий код, чтобы получить сигнатуру функции, используя inspect, чтобы распечатать ее на терминале в Python

import inspect

def foo(a, b):
   # do something
   return ans

func_rep = foo
name = func_rep.__name__   # 'foo'
args = inspect.getfullargspec(func_rep).args  # ['a', 'b']
repstr = name + f'{str(tuple(args))}'
print(repstr)   # foo('a', 'b')

Как видно выше, выходные данные представления имеют func_args в одинарные кавычки 'a'.

Как получить вывод в терминале следующим образом? или в импортированной кодовой базе?

foo(a,b) 

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Этот код напечатает сигнатуру функции без одинарных кавычек (').

import inspect

def foo(a, b):
   # do something
   return ans

func_rep = foo
name = func_rep.__name__   # 'foo'
args = inspect.getfullargspec(func_rep).args  # ['a', 'b']
print(name+'(%s)'%','.join(map(str, args))) 
0 голосов
/ 02 апреля 2020

не могли бы вы сделать это с форматированной строкой?

argstr = args[0]
  for arg in args[1:]:
    argstr +=', {}'.format(arg)
repstr='{}({})'.format(name, argstr)
...