python学习笔记04:交换2个变量的值、引用、复合赋值运算符等注意点

1.采用第三个变量暂存

a = 1
b = 2
temp = a
a = b
b = temp

2.加减法

a = a + b
b = a - b
a = a - b

3.异或运算

a = 1
b = 2 
a = a ^ b
b = a ^ b 	# 实际为(a^b)^b,即a
a = a ^ b	# 实际为(a^b)^a,即b

4.直接交换(不同于C,多变量赋值)

a,b = b,a	# 将b的值赋值给a,同时将原a的值赋给b

同理:

a = 1
b = 2
a,b = 4,a+b
print('a等于',a)
print('b等于',b)

结果为:

a等于 4
b等于 3

!!!注:python中对变量的赋值其实是‘引用’

例:a = 100 ,先在内存存入100这个数,然后将变量a引用到100这个值。而非在变量a的内存空间存入100。

>>> a = 100
>>> def test(num):
>>>     num += num
>>>     print(num)
    
>>> test(a)
>>> 200
>>> print(a)
>>> 100

num 为函数内定义的局部变量,当a=100传入函数时,将num引用到100、这个值。而数字、字符串、元组类型数据为不可变类型(不可赋值?不可分配?),故函数执行完成后并没有对数据100所在内存空间的数据进行更改,而是在内存内另存入一个数值200,然后用num引用到这个值(200)。
当数据没有被任何引用时,python的垃圾清理机制会自动释放此数据所在内存空间。

>>> a = [100]
>>> def test1(num):
>>>     num += num
>>>     print(num)
>
>>> test1(a)
>>> [100, 100]
>>> print(a)
>>> [100, 100]

列表、字典为可变类型,定义后可当做全局变量来使用

注:

>>> a = [100]
>>> def test2(num):
>>>     num = num + num
>>>     print(num)
>
>>> test2(a)
>>> [100, 100]
>>> print(a)
>>> [100]

!!! 注(与C不同):

num = num + num,[100] + [100] ------>>[100,100]在另一片内存空间新存入了一个数据,然后将这个列表引用到num,即num引用对象发生了改变

num += num ,num引用对象并没有发生改变,可以理解为在原引用对象的内存空间直接对数据进行改变。

以上两例可以这样便于理解:赋值运算,先计算完左边,然后再赋值给右边。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值