python中:x +=1和x = x + 1的区别

理解Python变量与对象引用
本文深入探讨Python中变量与对象引用的概念,解析'='号的绑定机制,以及在不可变与可变类型中,'x+=1'与'x=x+1'的区别。通过实例演示,帮助读者理解内存中对象的创建与引用过程。
部署运行你感兴趣的模型镜像

1、注释:
(1)不可变元素的类型有:整数、浮点数、字符串、元组
(2)可变元素的类型有:列表、字典

2、说明:
问题:“=”号的作用是将对象引用与内存中的对象进行绑定,整数既然是“不可变”的,如何改变一个指向整数的变量值呢?
答案:直接在内存中创建一个新的整数值,然后将变量引用与其绑定

3、在可变元素类型中(列表、字典)“x +=1"与"x=x+1"的区别说明:
(3.1)不可变元素的类型,“x +=1"与"x=x+1"作用一样,没有区别
(3.2)可变元素的类型中,“x +=1"与"x=x+1"作用不同,区别如下:
x +=1,表示:修改x自身的值(前提是:x必须是可变对象)
x = x + 1,表示:创建一个新的"同名”对象x,并将x + 1,赋值给新创建的同名变量x(它的含义和y = x + 1相同,只不过这里将y取名为x了),x + 1赋值给新x后,旧x的指向就会被释放

4、程序说明如下:
程序说明1:

print('*************整数,不可变变量***********************')
z = x = 1
x +=2
print('z等于:',z)

print('\n')

z = x = 1
x = x + 2
print('z等于:',z)

print('\n')
print('*************列表,可变变量***********************')
print('\n')

z = x = [1,2]  #初始,x和z都指向[1,2]
x +=[3,4]  #修改x自身的值
print('z等于:',z)  #x和z,指向相同,当x本身被改变的时候,z因为指向相同,也会被改变

print('\n')

z = x = [1,2] #初始,x和z都指向[1,2]
x = x + [3,4] #创建新同名变量:x,并将x+1赋值给x(即新x指向x+1,旧x指向释放)
print('z等于:',z) #因为不是改变x自身,而是创建一个新的变量x,改变新的变量x,旧的x变量不变,因此z不变

在这里插入图片描述

程序说明2:

def myfun(ls = []):
	ls.append('a')
	print(ls)
print('列表append:')
myfun();myfun();myfun()  																																																																																																																																																																																																																										
print('\n')

def sum(ls = []):
	ls =ls + ['a'] #创建新变量ls,ls指向:ls+['a'],同名旧变量ls不改变,还是指向None
	print(ls)
print('列表相加:')  #执行一次sum(),创建并输出一个新ls,同时不会改变旧ls,因此,每次输出都是['a']
sum();sum();sum()
print('\n')

def sum(ls = []):
	ls +=['a']  #ls自身加['a'],因此ls改变了
	print(ls)
print('列表相加:')  #执行一次sum(),ls改变一次,因此会输出:['a']、['a','a']、['a','a','a']
sum();sum();sum()
print('\n')

y=x=[5]
x +=[5]  #对x本身加上[5]
print('x+=是:',x, 'y是:',y)
print('\n')
x = x + [5] #创建一个同名的变量x,并将x+[5]赋值给新x
print('x+[5]是:',x,'y是:',y)

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

下面来详细解释这段 Python 代码的含义: ```python def sum_demo(x, y): for _ in range(2): x += 1 y += 1 result = x + y return result if __name__ == '__main__': result = sum_demo(1, 1) print(result) ``` ### 代码解释 1. **函数定义部分**: ```python def sum_demo(x, y): ``` 这里定义了一个名为 `sum_demo` 的函数,该函数接收两个参数 `x` `y`,用于后续的计算。 2. **循环部分**: ```python for _ in range(2): x += 1 y += 1 ``` `for _ in range(2)` 表示循环执行两次。`_` 是一个惯用的变量名,在这里表示不需要使用循环的索引值。在每次循环中,`x` `y` 的值都会各自加 1。 3. **计算结果并返回**: ```python result = x + y return result ``` 循环结束后,将 `x` `y` 相加的结果赋值给变量 `result`,并通过 `return` 语句将 `result` 返回。 4. **主程序部分**: ```python if __name__ == '__main__': result = sum_demo(1, 1) print(result) ``` `if __name__ == '__main__':` 是 Python 中常用的语句,用于判断当前脚本是否作为主程序直接运行。如果是,则执行下面的代码。这里调用 `sum_demo` 函数,传入参数 `1` `1`,将返回结果赋值给 `result`,最后使用 `print` 函数输出 `result` 的值。 ### 代码执行过程 - 调用 `sum_demo(1, 1)` 时,`x` `y` 初始值都为 1。 - 进入循环,第一次循环后,`x` 变为 2,`y` 变为 2。 - 第二次循环后,`x` 变为 3,`y` 变为 3。 - 计算 `result = x + y`,即 `result = 3 + 3 = 6`。 - 函数返回 `result` 的值 6,主程序中 `result` 接收该值并打印出来。 ### 总结 这段代码的主要功能是定义一个函数 `sum_demo`,该函数接收两个参数,将这两个参数的值各自加 2 后求并返回结果,最后在主程序中调用该函数并输出结果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京城徐董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值