c语言和python变量赋值差异,python中的赋值操作与C语言中的赋值操作中的巨大差别...

本文通过对比C语言和Python中变量赋值的差异,解释了Python中引用赋值的概念。在C语言中,变量是数据的盒子,而在Python中,变量更像指针,指向数据的位置。当在Python中对列表进行赋值和修改时,这种差异尤为明显。文章通过示例代码展示了如何理解Python中的变量行为,并解释了为何在修改列表元素后,多个变量可能指向同一列表的更新状态。
摘要由CSDN通过智能技术生成

首先让我们来看一个简单的C程序:

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 a = 8;2 b =a;3 b = 6;4 printf("a = %d, b = %d\n", a, b);

View Code

相信只要学过C语言, 不用运行程序便能知道程序将会打印出a = 8,  b = 6.

现在让我们来看一看这个程序的python版本

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 a = 8

2 b =a3 b = 6

4 print(a, b)

View Code

让我们来看一看运行结果:

20190804220352157968.png

似乎一切都正常。

不,要是真的是那么简单,那要我干嘛!!!

看,程序又来了。。。

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 name = [‘fujian‘, ‘beijing‘, ‘shanghai‘]2 name2 =name3 name2[1] = ‘tainjing‘

4 print(name)5 print(name2)

python程序

结果是不是还是我们所想的那样:

[‘fujian‘, ‘beijing‘, ‘shanghai‘]

[‘fujian‘, ‘tainjing‘, ‘shanghai‘]

可现实是:

20190804220352500720.png

Why!Why!Why!

原因如下:

1. c语言中的变量好比一个盒子,a = 8就好比将8这个数据放入了这个名为a的盒子中;而python在这一方面与C语言可算是天壤之别;

python中的变量有点类似C语言中指针, a = 8在python中就好比a 指向了8这个数据.

2. python中的每一次赋值都是将变量指向一个新的的数据(位置)

现在我们在回过头来看一看这两个python程序,

一:

a = 8

b = a

b = 6

首先语句a = 8说明变量a指向了8这个数据;

接着语句a = b说明变量b指向了a,也就等同与a与b一起指向了8这个数据;

最后语句b = 6,说明此时变量b的指向已经发生了改变, 但是变量a的指向并没有改变,变量b现在指向了6这个数据,变量a还是指向原来的数据8;

所以最后会打印出a = 8,  b = 6.

二:

name = ["fujian", "beijing", "shanghai"]

name2 = name

name2[1] = "tianjing"

同样我们可以类似上一个程序那样分析:

首先第一条语句说明变量name指向了一个列表;

第二条语句说明变量name2与name指向了同一个列表;

第三条语句的分析非常重要:

请注意

name[1]其实也可以看成是一个‘变量’,只不过这个变量是属于name所指向的列表的一部分,它原先是指向“beijing”这个字符串,

现在经过第三条语句后,变量name[1]就改变了指向,指向了“tianjing"这个字符串了;这样也恰好改变了列表中的内容。

再加上最终name与name2还是指向最初的那个列表(只不过这个列表‘更新’了),

所以现在问题不就解决了!!!

如果您发现以上信息有问题,请及时留言,谢谢!

原文:https://www.cnblogs.com/ReturnOfTheKing/p/11299977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值