繁体   English   中英

等同于Python Magic *或**方法

[英]Python magic * or ** method equivalent

是否存在与***魔术等效的python方法?

所以,我的意思是不这样做:

a = (1,2,3)
method(*a)

而是执行以下操作:

a = (1,2,3)
method(remove_magic(a))

在阅读代码的同时,我看到*** ,只是希望有更好的可读性。 我希望python标准库中能为我做些什么。

是的,有一个等价物

从技术上讲,您可以使用内置的apply()函数。 根据python文档:

apply()的使用等效于function(* args,** keywords)。

因此您可以执行apply(function, args, keywords=None) keywords是可选的。)

但不要使用它

除了非惯用性的用法和使更多有经验的程序员感到困惑之外,该功能已被弃用 ,不应在新代码中使用:

自版本2.3起不推荐使用:使用function(* args,** keywords)代替apply(function,args,keyword)

无法使函数执行与***相同的功能。 您必须修改method本身。 原因是remove_magic函数最多可以返回一个元组/列表,但是您已经有一个:

a = (1,2,3)
method(remove_magic(a))

pythonic的替代方法可能是解开元组并显式传递参数:

a = (1, 2, 3)
x, y, z = a
method(x, y, z)

在Python 2.x中,您可以使用apply ,但是我觉得它不那么清晰。 它在python 3中也不可用。

apply(method, a)

官方建议只是坚持

method(*a)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM