Python args 参数用法
以前写代码的时候也用到过 args
参数,但是时间久了就有些忘了,今天用的时候遇到了一个错误,这里特来记录一下。
示例1
# 情况1: 输入数组为一维数组
from numpy import array
def 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 array
def 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 array
def 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
中包含着 x
和 y
。这一点可以在下面的代码中得到验证:
* ------收集符号
x = [[0, 1], [2, 3, 4]]
print(*x)
"""
result:
[0, 1] [2, 3, 4]
"""
如果大家觉得有用,就点个赞让更多的人看到吧~