python等号

a=[1,23,4,6,7]
b=a[2]

b=3

a

[1, 23, 4, 6, 7]

解释:b指向了一个新的变量3,a不会改变


def fun2(a):
    a=5
fun2(a[0])
a

[1, 23, 4, 6, 7]

解释:函数内的参数a指向了一个新的变量5,但是对于列表a中的元素,a[0]并没有发生变化。

class Node:
    def __init__(self):
        self.x=3

a=[Node(),Node(),Node()]

b=a[1]

b.x=4

#from __future__ import print_function
for i in range(3):
    print(a[i].x,end=' 'if i<2 else '\n')

3 4 3

解释:b.x=4即a[1].x=4

def fun(a):
    a.x=5


fun(a[0])   

for i in range(3):
    print(a[i].x,end=' 'if i<2 else '\n')

5 4 3
解释:函数中的a.x=5,即a[0].x=5


class Node:
    def __init__(self):
        self.x=3

class Node2:
    def __init__(self):
        self.x='222'

def fun3(x):
    x='sadadasd'


def fun4(x):
    x=Node2()

a=[Node(),Node(),Node()]


fun3(a[2])
a[2].x

3

fun4(a[2])
a[2].x

3

fun(a[2])
a[2].x

5

解释:

这证明即使向函数的形参x传入一个复杂的自定义类型对象,如果中途将x指向另一个变量或对象,那么传入的对象就失去了控制。

def fun5(a):
    a.x=1111
    a='sssss'

fun5(a[2])

a[2].x

1111

a[2]

<main.Node at 0x2d622d68710>


lst=[Node()]*5
lst

[<main.Node at 0x2d622d656d8>,

<main.Node at 0x2d622d656d8>,

<main.Node at 0x2d622d656d8>,

<main.Node at 0x2d622d656d8>,

<main.Node at 0x2d622d656d8>]

lst[2]='sadasdasdsa'
ret=lst[3]
ret='asdasdsad'

lst

[<main.Node at 0x2d622d656d8>,

<main.Node at 0x2d622d656d8>,

‘sadasdasdsa’,

<main.Node at 0x2d622d656d8>,

<main.Node at 0x2d622d656d8>]


def fun6(a):
    a[2]=5
lst=[1,1,1,1,1,1,1]

fun6(lst)
lst

[1, 1, 5, 1, 1, 1, 1]

def fun7(a):
    a=[2,2,2,2,2,2]
    a[2]=5
    print(a)
lst=[1,1,1,1,1,1,1]
fun7(lst)
print(lst)

[2, 2, 5, 2, 2, 2]

[1, 1, 1, 1, 1, 1, 1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值