如何在代码库中看到 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
我有以下代码使用 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