Python 在命令提示行中打印函数的选项

Python 在命令提示行中打印函数的选项,python,python-2.7,command-prompt,Python,Python 2.7,Command Prompt,我在知道我在哪个选项中运行一个函数时遇到了一些问题,我想以某种方式实现这个函数打印它自己的参数。我发现有关系,但我试过了,没有成功。我尝试的代码: def SharedData(list1, list2, list3, list4, list5, remove=False): """Do some magic""" sets=list1[:] #Magic happens print len(sets) / float(len(list1)) * 100, "%

我在知道我在哪个选项中运行一个函数时遇到了一些问题,我想以某种方式实现这个函数打印它自己的参数。我发现有关系,但我试过了,没有成功。我尝试的代码:

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)


我怎样才能做到这一点呢?

你总是可以做两件事:

  • 仅使用关键字args
  • 装饰函数以打印出传入的kwargs
比如:

def printkwargs(func):
    @functools.wraps(func)
    def wrapper(**kwargs):
        ret = func(**kwargs)
        print ret, kwargs
    return wrapper

@printkwargs
def SharedData(...):...
我没有测试这个,但应该可以

更新为包含*参数:

def printkwargs(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        ret = func(*args, **kwargs)
        print ret, args, kwargs
    return wrapper
通过抓取本地词典:

from copy import copy

def f(a, b, c):
    l = copy(locals())

我认为这是不可能的。当函数被调用时,“闪烁”将被其值替换。解释器不关心调用什么,也从不告诉函数。函数只获取值。让我检查您是否理解正确,您似乎想知道用作参数的变量的名称?如果是这样的话,用任何简单的方法都是不可能的。除此之外,如果函数被称为
SharedData(f(1)+g('x'),…)
,该怎么办?对。不应该这样称呼它,但是我想被打印“…来自f(1)+g('x')”,嗯,即使在读了《我有问题》之后。你能解释一下吗?我有一些问题:
TypeError:wrapper()在应用此代码时只接受0个参数(给定5个)
只使用关键字args,即SharedData(a=5,b=6),而不是SharedData(5,6)。我这样做是因为您需要参数的名称,如果您不关心参数名称,可以包括*args。也看看这个。在更新版本中,我得到了对象本身,以及包含值的列表。通过你提出的问题,我了解了我如何命名函数中的参数,而不是我传递给函数的参数。现在,我进入了另一个不相关的问题。我一想好就给你的答案打分;)
from copy import copy

def f(a, b, c):
    l = copy(locals())