Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python magic*或**等效方法_Python_Python 2.7 - Fatal编程技术网

Python magic*或**等效方法

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函数最多只能返回一个元组/列表,但您已经

有一种python方法等价于
*
**
魔术吗

因此,我的意思是,与其做:

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是首选方法。