Python magic*或**等效方法
有一种python方法等价于Python magic*或**等效方法,python,python-2.7,Python,Python 2.7,有一种python方法等价于*和**魔术吗 因此,我的意思是,与其做: a = (1,2,3) method(*a) 相反,你可以这样做: a = (1,2,3) method(remove_magic(a)) 在阅读代码时,我看到了*和***,我只希望有一种更好、更可读的方法来完成这项工作。我希望python标准库中有什么东西可以帮我做到这一点。没有办法生成一个函数,它可以做与*或**相同的事情。您必须修改方法本身。原因是remove\u magic函数最多只能返回一个元组/列表,但您已经
*
和**
魔术吗
因此,我的意思是,与其做:
a = (1,2,3)
method(*a)
相反,你可以这样做:
a = (1,2,3)
method(remove_magic(a))
在阅读代码时,我看到了
*
和***
,我只希望有一种更好、更可读的方法来完成这项工作。我希望python标准库中有什么东西可以帮我做到这一点。没有办法生成一个函数,它可以做与*
或**
相同的事情。您必须修改方法本身。原因是remove\u magic
函数最多只能返回一个元组/列表,但您已经有了一个元组/列表:
a = (1,2,3)
method(remove_magic(a))
pythonic的替代方法可能是解压缩元组并显式传递参数:
a = (1, 2, 3)
x, y, z = a
method(x, y, z)
在Python2.x中,您可以使用apply
,但我觉得它更清晰。它在Python3中也不可用
apply(method, a)
官方建议只需坚持
method(*a)
是的,有一个等价物
从技术上讲,您可以使用内置函数。根据python文档:
apply()的使用相当于函数(*args,**关键字)
因此,您可以执行apply(函数、参数、关键字=None)
。(关键字
是可选的。)
但是不要用它
除了不惯用且让更有经验的程序员感到困惑之外,此函数不应在新代码中使用:
自版本2.3以来已弃用:使用函数(*args,**关键字)而不是应用(函数,args,关键字)
你认为*
和**
是什么?你在说什么?我不知道你在问什么。您是否正在寻找使用*
和**
参数扩展拦截调用的方法?如果没有,因为这与被调用的对象无关。如果您正在寻找乘法和幂运算的运算符,那么有一些特殊的方法,但您需要更清楚地了解您试图解决的问题。更新后:*
和**
语法会导致编译器生成不同的字节码。没有办法用“神奇的函数”来重现它,不。我会发现使用不同的方法来重现相同的结果的可读性会降低,因为这会让有经验的程序员感到困惑。我想你是在寻找,但Python文档明确地说SPlat是首选方法。