Python 不变对象-可变对象

    def FindContinuousSequence_optimize(self, tsum):
	        # write code here
	         if tsum < 3:
	             return []
	         res = []
	         for i in range(1, int((tsum + 1) / 2)):
	             print('外层循环i:%d' % i)
	             sum = 0
	             temp = []
	             while sum < tsum:
	                 print('内层循环i:%d' % i)
	                 sum += i
	                 temp.append(i)
	                 i += 1
	             if sum == tsum:
	                 res.append(temp)
	         return res

记录一下,在做的时候比较纳闷为什么内部循环时可以在i值基础上进行改变,跳出内部循环i值对外部循环i值也没影响。
由此想到Python的字符串数字是不可变变量,而变量只是给存储的数字字符串等起的“名字”,因此输出了一下i在内外循环的地址,发现,内外循环对应相同的i值地址相同,应证了Python的不可变变量。

不可变(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)
可变(mutable):字典型(dictionary)、列表型(list)

Python函数参数对于可变对象,函数内对参数的改变会影响到原始对象;对于不可变对象,函数内对参数的改变不会影响到原始参数。原因在于:
1、可变对象,参数改变的是可变对象,其内容可以被修改。
2、不可变对象,改变的是函数内变量的指向对象。引自

因此,代码中i值只是当前数值的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值