代码之家  ›  专栏  ›  技术社区  ›  llrs

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

  •  0
  • llrs  · 技术社区  · 12 年前

    我知道在哪个选项中运行一个函数有几个问题,我想以某种方式实现这个函数打印自己的参数。我找到了 this question 相关,但我尝试了,但没有成功。我尝试的代码:

    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
    

    我怎样才能做到这一点?

    1 回复  |  直到 9 年前
        1
  •  1
  •   acushner    12 年前

    你总是可以做两件事:

    • 仅使用关键字参数
    • 修饰函数以打印出传入的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())