Python args 参数用法

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 中包含着 xy。这一点可以在下面的代码中得到验证:

* ------收集符号

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值