Python关于函数传列表/Tensor赋值

话不多说,直接看代码。

def assign(a):
    a[0] = 5		#in-place 修改

def assign_2(a):
    a = [2, 3, 4]   #直接赋值
    print("a:{} address of a:{}".format(a, id(a)))

x = [1, 2, 3]
print("x:{} address of x:{}".format(x, id(x)))
assign(x)
print("x:{} address of x:{}".format(x, id(x)))
assign_2(x)
print("x:{} address of x:{}".format(x, id(x)))

最后输出:

x:[1, 2, 3] address of x:2478430233344
x:[5, 2, 3] address of x:2478430233344
a:[2, 3, 4] address of a:2478431575744
x:[5, 2, 3] address of x:2478430233344

说明,assign成功改变了x,是按地址修改。
而assign_2自动新建了一个变量(从地址可以看出来),并未修改x。
Pytorch的Tensor与列表同理

你可能感兴趣的:(Pytorch使用,python,开发语言)