我有几个问题知道在哪个选项中运行函数,我想以某种方式实现这个函数打印自己的参数。我发现这个问题很相关,但我试过了,没有成功。我试过的代码:
def SharedData(list1, list2, list3, list4, list5, remove=False):
"""Do some magic"""
sets=list1[:]
#Magic happens
print len(sets) / float(len(list1)) * 100, "% of genes start are equal between the predictors from", *list1
在这段代码中,我想打印第一个参数的名称。在命令行中,我知道如何应用这个函数。我想在运行这个函数SharedData(glimmer, easygene, genemark, augustus, prodigal)
:
之后在终端提示符中读取类似的内容30,000000 % of genes start are equal between the predictors from glimmer
我怎么才能做到呢?
你总是可以做两件事:
- 只使用关键字args
- 修饰函数以打印您传入的参数
类似:
def printkwargs(func):
@functools.wraps(func)
def wrapper(**kwargs):
ret = func(**kwargs)
print ret, kwargs
return wrapper
@printkwargs
def SharedData(...):...
我没有测试这个,但是应该没问题
更新为包含*args:
def printkwargs(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
ret = func(*args, **kwargs)
print ret, args, kwargs
return wrapper
通过抓取locals字典:
from copy import copy
def f(a, b, c):
l = copy(locals())