0

我有以下代码来获取函数签名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) 
4

3 回答 3

2

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

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))) 
于 2020-04-02T03:46:34.567 回答
0

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

argstr = args[0]
  for arg in args[1:]:
    argstr +=', {}'.format(arg)
repstr='{}({})'.format(name, argstr)
于 2020-04-02T03:49:20.150 回答
0
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
于 2021-09-29T18:53:28.103 回答