> 文章列表 > Python args 参数用法

Python args 参数用法

Python args 参数用法

Python args 参数用法

  • 示例1
  • 示例2
  • * ------收集符号

以前写代码的时候也用到过 args 参数,但是时间久了就有些忘了,今天用的时候遇到了一个错误,这里特来记录一下。

示例1

# 情况1: 输入数组为一维数组
from numpy import arraydef expand_array(*args):V = [array(v) for v in args]print(V)if __name__ == "__main__":x, y = [0, 1], [2, 3, 4]expand_array(x, y)# 输入数组为二维数组
from numpy import arraydef expand_array(*args):V = [array(v) for v in args[0]]print(V)if __name__ == "__main__":x = [[0, 1], [2, 3, 4]]expand_array(x)

可以看到,当输入数组为一维数组时, args 遍历时代表的是每一个单独的一维数组,但是当输入是二维数组时,args 代表的是输入进入的每一个二维数组,虽然我们只输入了一个二维数组,但是后面默认会有一个类似于空数组的量,此时,我们需要的是对二维数组中第 1, 2 行分别进行操作,因此,我们需要使用 args[0] 直接选中我们的第一个二维数组。

示例2

那有没有什么方法可以将上述两种情况结合一下呢?答案是有的,请看如下代码:

from numpy import arraydef expand_array(*args):V = [array(v) for v in args]print(V)if __name__ == "__main__":x = [[0, 1], [2, 3, 4]]expand_array(*x)
"""
result:
[array([0, 1]), array([2, 3, 4])]
"""

这样,我们就可以实现 expand_array() 函数内部的一般化。那为什么可以实现这种效果呢?实际上 *Python 中是一个收集符号,当我们使用它时就等同于令 x, y = [0, 1], [2, 3, 4],且此时 *x 中包含着 xy。这一点可以在下面的代码中得到验证:

* ------收集符号

x = [[0, 1], [2, 3, 4]]
print(*x)
"""
result:
[0, 1] [2, 3, 4]
"""

如果大家觉得有用,就点个赞让更多的人看到吧~