相关疑难解决方法(0)

django admin自定义命令 - 将字符串列表传递给args

我有一个字符串列表,我想在我的django自定义命令中传递给args.

list = ['abc', 'def', 'ghi', etc...]
Run Code Online (Sandbox Code Playgroud)

我怎样才能在python函数中执行此操作:

management.call_command('commandname', args, options) 
Run Code Online (Sandbox Code Playgroud)

我已经厌倦了传递我的args列表:

[1]直接:

    management.call_command('commandname', list)
Run Code Online (Sandbox Code Playgroud)

[2]作为循环:

    management.call_command('commandname', (abc for abc in list))
Run Code Online (Sandbox Code Playgroud)

但是在输入自定义命令后两者都失败了

python django

3
推荐指数
1
解决办法
2737
查看次数

Python中数字向量或数字列表的平均值

我是Python的新手,所以请忍受我天真的问题.

我想写一个函数,它接受一个数字向量并计算它们的平均值.所以我写了一个小功能

def my_mean(*args):
    if len(args) == 0:
        return None
    else:
        total = sum(args)
        ave = 1.0 * total / len(args)
        return ave

my_mean(1, 2, 3)
2.0
Run Code Online (Sandbox Code Playgroud)

但是如果参数是数字列表,则此函数将不起作用.例如,

my_mean([1, 2, 3])
Traceback (most recent call last):
  File "/usr/lib/wingide-101-4.1/src/debug/tserver/_sandbox.py", line 1, in <module>
    # Used internally for debug sandbox under external interpreter
  File "/usr/lib/wingide-101-4.1/src/debug/tserver/_sandbox.py", line 21, in my_mean
TypeError: unsupported operand type(s) for +: 'int' and 'list'
Run Code Online (Sandbox Code Playgroud)

我知道NumPy有一个函数numpy.mean,它将列表作为参数,但不是数字向量my_mean.

我想知道是否有办法my_mean在这两种情况下都能开展工作?所以:

my_mean(1, 2, 3)
2.0 …
Run Code Online (Sandbox Code Playgroud)

python average function

3
推荐指数
1
解决办法
431
查看次数

带有未知参数的Python包装函数

如果我有这个功能:

def foo(arg_one, arg_two):
    pass
Run Code Online (Sandbox Code Playgroud)

我可以像这样包装它:

def bar(arg_one, arg_two):
    return foo(arg_one, arg_two)

foo = bar
Run Code Online (Sandbox Code Playgroud)

是否有可能在不知道foo必需参数的情况下这样做,如果是这样,怎么做?

python arguments function

3
推荐指数
1
解决办法
239
查看次数

如何在python类中使用*args?

我试图让一些args在一个类中工作,我已经在一个函数中运行了如何在函数中使用*args?.

我正在尝试将该函数放入类中,但我似乎并不了解如何初始化具有带*args 的init函数的类.代码如下:

class classname(object):
    def __init__(self, *args):
        <code-snip>
        ...
        </code-snip>

if __name__ == "__main__":
    start = classname()
    start()
Run Code Online (Sandbox Code Playgroud)

所以在这里我很困惑如何处理'start()'.我必须使用'start(*sys.argv [1:])'或'start()'.两者似乎都不起作用.我希望在init中获得正确传递的*args .

请指点.

万分感谢..

======

如果我不清楚详细说明它是如何起作用的,我很抱歉.

a)使用start时(*sys.argv [1:])

Traceback (most recent call last):
  File "check.py", line 126, in <module>
    start(*sys.argv[1:])
TypeError: 'check' object is not callable
Run Code Online (Sandbox Code Playgroud)

b)在使用start()时,我得到:

Traceback (most recent call last):
  File "check.py", line 126, in <module>
    start()
TypeError: 'check' object is not callable
Run Code Online (Sandbox Code Playgroud)

这些是出现的错误.

@alko,是的,你是对的.我正在研究如何在init中正确传递*args .

python class init args

3
推荐指数
1
解决办法
3926
查看次数

如何在Python中解压缩列表或元组?

是否可以解压缩列表或元组,使得值可以用作函数参数?即,我怎样才能使第二条线工作?

f(1,2,3)
f(???([1,2,3]))
Run Code Online (Sandbox Code Playgroud)

我现在正在手工做这件事,比如:

tmp1, tmp2, tmp3 = [1,2,3]
f(tmp1,tmp2,tmp3)
Run Code Online (Sandbox Code Playgroud)

context:我没有能力修改f(),但这是代码生成器的一部分,所以时髦的解决方案不是问题.

python tuples list

3
推荐指数
1
解决办法
1123
查看次数

Python __init __(self,**kwargs)占用1个位置参数,但给出了2个

我正在Python 3.6中创建一个简单的类,它应该接受键,字典中的值作为参数

我的代码:

class MyClass:
    def __init__(self, **kwargs):
        for a in kwargs:
            self.a=kwargs[a]
            for b in a:
                self.a.b = kwargs[a][b]
Test = MyClass( {"group1":{"property1":100, "property2":200},\
    "group2":{"property3":100, "property4":200}})
Run Code Online (Sandbox Code Playgroud)

我的代码返回一个错误:

TypeError:init()占用1个位置参数,但给出了2个

我希望Test.group2.property4返回200

我发现有很多类似的问题但是到处都存在的主要问题是在init方法中缺少"self" .但我有它.

有人可以解释这个错误的原因吗?谢谢

python typeerror

3
推荐指数
1
解决办法
5688
查看次数

Python函数装饰器错误

我试图使用函数装饰器,但在这个例子中它对我不起作用,你能给我解决方案吗?

def multiply_by_three(f):
    def decorator():
        return f() * 3
return decorator

@multiply_by_three
def add(a, b):  
    return a + b

print(add(1,2)) # returns (1 + 2) * 3 = 9
Run Code Online (Sandbox Code Playgroud)

解释器打印错误:"TypeError:decorator()需要0个位置参数但是给出了2个"

python decorator python-3.x python-decorators

3
推荐指数
1
解决办法
469
查看次数

Python参数(初学者)

我需要有关参数的帮助.这两个函数定义是否对print_twice执行完全相同的操作?

def print_twice(lol):
    print lol
    print lol

def print_twice(michael):
    print michael
    print michael
Run Code Online (Sandbox Code Playgroud)

如果是,那么我猜测用于参数的单词无关紧要,对吗?

python

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

__init__() 得到了意外的关键字参数“y”

我正在学习《面向绝对初学者的 Python 编程》这本书,并决定通过制作自己的游戏来测试我的一些技能。游戏基本上是“不要被飞来的尖刺击中”,我遇到了一个问题。使用此代码运行时:

class Player(games.Sprite):
    """The player that must dodge the spikes."""

    def update(self):
        """Move to the mouse."""
        self.x = games.mouse.x
        self.y = games.mouse.y
        self.check_collide()

    def check_collide(self):
        """Check for a collision with the spikes."""
        for spike in self.overlapping_sprites:
            spike.handle_collide()


def main():


    pig_image = games.load_image("Mr_Pig.png")
    the_pig = Player(image = pig_image,
                     x = games.mouse.x,
                     y = games.mouse.y)
    games.screen.add(the_pig)
    games.mouse.is_visible = False
    games.screen.event_grab = True

    games.screen.mainloop()

main()
Run Code Online (Sandbox Code Playgroud)

我没问题。但是当我想使用“ init ”时,就像在这段代码中一样:

class Player(games.Sprite):
    """The player that must dodge the spikes."""

    def update(self):
        """Move to …
Run Code Online (Sandbox Code Playgroud)

python pygame livewires

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

将函数参数名称传递给Python中的另一个函数

给定一个简单的功能:

def A(a = 1, b = 2):
    return a+b
Run Code Online (Sandbox Code Playgroud)

我想写另一个函数来改变默认参数值,对于a或者b.用户可以通过设置var = a或指定要更改的参数var = b.例如:

def B(var = 'a', new_value = 10):
    temp_dict = {var:new_value}
    ans = A(var)
    return ans    
Run Code Online (Sandbox Code Playgroud)

要么

def B(var = 'a', new_value = 10):
    ans = A(var = new_value)
    return ans
Run Code Online (Sandbox Code Playgroud)

在功能上def B(),设置完成后var = avar = new_value = 10,我希望A(var = new_value)达到同样的效果A(a = 10).你知道写函数的正确方法def B()吗?谢谢.

python function-parameter

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