找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2230|回复: 3

[求助] 关于函数返回一个数组的问题

3

主题

10

帖子

10

积分

贫民

积分
10
yalishiduode 发表于 2018-9-19 16:31:41 | 显示全部楼层 |阅读模式
from numpy import *
def func(x):        r,c=shape(x)
    for i in range(r):
        for j in range(c):
            x[i,j]+=1
    return x
def main():
    a=zeros((2,2))
    b=func(a)
    print(b)
    print(a)结果为:[size=25.0667px][[1. 1.] [1. 1.]][[1. 1.] [1. 1.]][size=25.0667px]很明显数组a也被修改了。为何数组a作为实参输入也会变化

回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2018-9-20 20:47:17 | 显示全部楼层
本帖最后由 uitb 于 2018-9-20 20:51 编辑

QQ截图20180920204637.png
你看这j几个货的内存地址全都一样,也就是说a、x都是指向同一个内存地址的,函数里面改也是在这个内存地址上修改的,所以a就跟着变咯,然后你又把函数里面的x返回赋值给了b,b也指向了这块内存,所以他们三个就都是同一个值的几个马甲而已
回复 支持 1 反对 0

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
yalishiduode  楼主| 发表于 2018-9-19 16:44:05 | 显示全部楼层
菜鸟问题求解答
回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
yalishiduode  楼主| 发表于 2018-9-21 18:58:53 | 显示全部楼层
uitb 发表于 2018-9-20 20:47
你看这j几个货的内存地址全都一样,也就是说a、x都是指向同一个内存地址的,函数里面改也是在这个内存地 ...

谢谢回复。那其实是没有必要重新用b存储返回的矩阵的吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表