如何在代码库中看到 python 中的干净函数签名?

How to get a clean function signature in python as seen in the codebase?

我有以下代码使用 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')

如上所示,表示的输出在单引号 'a' 中包含 func_args

如何在终端中得到如下输出?或者在导入的代码库中?

foo(a,b) 

此代码将打印不带单引号 (') 的函数签名。

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))) 

你不能用格式化的字符串来做吗?

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

def fn_signature(func_obj):
    out = func_obj.__name__
    
    try:
        signature = inspect.signature(func_obj)
    except (ValueError, TypeError):
        signature = None

    if signature is not None:
        out += f"{signature}\n"
        
    return out