相关疑难解决方法(0)

在Python中获取方法参数名称

鉴于Python函数:

def a_method(arg1, arg2):
    pass
Run Code Online (Sandbox Code Playgroud)

如何提取参数的数量和名称.即,鉴于我有一个func的引用,我想要返回func.[something]("arg1","arg2").

这种情况的使用场景是我有一个装饰器,我希望使用方法参数的顺序与它们为实际函数出现的顺序相同.也就是说,当我调用aMethod("a","b")时,装饰器看起来会打印出"a,b"吗?

python introspection decorator python-datamodel

214
推荐指数
10
解决办法
12万
查看次数

保留装饰功能的签名

假设我编写了一个装饰器来做一些非常通用的东西.例如,它可能会将所有参数转换为特定类型,执行日志记录,实现memoization等.

这是一个例子:

def args_as_ints(f):
    def g(*args, **kwargs):
        args = [int(x) for x in args]
        kwargs = dict((k, int(v)) for k, v in kwargs.items())
        return f(*args, **kwargs)
    return g

@args_as_ints
def funny_function(x, y, z=3):
    """Computes x*y + 2*z"""
    return x*y + 2*z

>>> funny_function("3", 4.0, z="5")
22
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很顺利.然而,有一个问题.装饰函数不保留原始函数的文档:

>>> help(funny_function)
Help on function g in module __main__:

g(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

幸运的是,有一个解决方法:

def args_as_ints(f):
    def g(*args, **kwargs):
        args = [int(x) for x in args]
        kwargs = dict((k, int(v)) for k, v in kwargs.items()) …
Run Code Online (Sandbox Code Playgroud)

python decorator

102
推荐指数
5
解决办法
1万
查看次数

获取传递给函数的参数的列表/元组/字典?

鉴于以下功能:

def foo(a, b, c):
    pass
Run Code Online (Sandbox Code Playgroud)

如何获得传入的参数的list/tuple/dict/etc,而不必自己构建结构

具体来说,我正在寻找Python的JavaScript arguments关键字版本或PHP的func_get_args()方法.

想要的是使用*args或的解决方案**kwargs; 我需要在函数定义中指定参数名称(以确保它们被传入),但在函数中我希望在list-或dict-style结构中使用它们.

python arguments function

62
推荐指数
4
解决办法
3万
查看次数

Python列表函数参数名称

有没有办法获取一个函数需要的参数名称?

def foo(bar, buz):
    pass

magical_way(foo) == ["bar", "buz"]
Run Code Online (Sandbox Code Playgroud)

python arguments function

34
推荐指数
2
解决办法
4万
查看次数

检查Python函数中传递的参数数量

我是Python的新手,想知道是否有一种简单的方法来获取Python函数中传递的参数数量.

a(1, 2, 3) ==>3
a(1, 2) ==>2
Run Code Online (Sandbox Code Playgroud)

python python-3.x

13
推荐指数
2
解决办法
1万
查看次数

这个守则做了什么?

我正在阅读jQuery的"插件/创作",虽然我已经写了一些jQuery-Plugins.现在我看到jQuery有一种特殊的方法来确定方法并调用:

(function( $ ){

  var methods = {
    init : function( options ) { // THIS },
    show : function( ) { // IS   },
    hide : function( ) { // GOOD },
    update : function( content ) { // !!! }
  };

  $.fn.tooltip = function( method ) {

    // Method calling logic
    if ( methods[method] ) {
      return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

8
推荐指数
1
解决办法
867
查看次数

Python获取部分函数的参数

我正在寻找类似于这里所要求的东西获取python函数内的参数名列表,但使用部分函数.即.我需要获得部分函数的可能参数.我可以使用以下方法获取关键字参数

my_partial_func.keywords
Run Code Online (Sandbox Code Playgroud)

但我目前正在努力获得非关键字参数.检查模块也没有为这种特殊情况产生任何结果.任何建议都会很棒.

python parameters arguments introspection partial

7
推荐指数
1
解决办法
2007
查看次数

将命名参数打包成dict

我知道如果函数接受,我可以将函数参数转换为字典**kwargs.

def bar(**kwargs):
    return kwargs

print bar(a=1, b=2)
{'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

但是,情况恰恰相反?我可以命名参数打包到字典中并返回它们吗?手动编码版本如下所示:

def foo(a, b):
    return {'a': a, 'b': b}
Run Code Online (Sandbox Code Playgroud)

但似乎必须有更好的方法.请注意,我试图避免**kwargs在函数中使用(命名参数对于代码完成的IDE更有效).

python dictionary kwargs

7
推荐指数
1
解决办法
1475
查看次数

julia introspection - 获取传递给函数的变量名称

在朱莉娅,有没有办法获得传递给函数的名称?

x = 10
function myfunc(a)
# do something here
end
assert(myfunc(x) == "x")
Run Code Online (Sandbox Code Playgroud)

我是否需要使用宏或是否有提供内省的本机方法?

julia

6
推荐指数
2
解决办法
1923
查看次数

如何在matplotlib中将变量名称打印为标题

我的目标是创建一个简单的函数,为带有已绘制变量名称的图形添加标题。

到目前为止,我有:

def comparigraphside(rawvariable, filtervariable, cut):
    variable = rawvariable[filtervariable > 0]
    upperbound = np.mean(variable) + 3*np.std(variable)
    plt.figure(figsize=(20,5))
    plt.subplot(121)
    plt.hist(variable[filtervariable <= cut], bins=20, range=(0,upperbound), normed=True)
    plt.title("%s customers with filter less than or equal to %s" % (len(variable[filtervariable <= cut]), cut))
    plt.subplot(122)
    plt.hist(variable[filtervariable > cut], bins=20, range=(0,upperbound), normed=True)
    plt.title("%s customers with filter greater than %s" % (len(variable[filtervariable > cut]), cut));
Run Code Online (Sandbox Code Playgroud)

在哪里:

plt.title("%s customers with filter less/greater...") 
Run Code Online (Sandbox Code Playgroud)

我很乐意说:

plt.title("%s customers with %s less/greater...")
Run Code Online (Sandbox Code Playgroud)

目前,我能想到的唯一解决方案是为我的变量制作一个字典,这是我想避免的。任何帮助都将不胜感激。

python matplotlib

5
推荐指数
1
解决办法
7011
查看次数