gpt4 book ai didi

图解Python变量与赋值

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章图解Python变量与赋值由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

python是一门独特的语言,与c语言有很大区别,初学python很多萌新表示对变量与赋值不理解,学过c的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如:

?
1
int a = 1 ;

图解Python变量与赋值

a 就是内存空间中的一小块区域,就像是一个大房间里面的一个小盒子,赋值就是把整数1装载到盒子里面.

现在给变量a重新赋值 。

?
1
a = 2 ;

图解Python变量与赋值

盒子依然是那个盒子,也就是说内存地址没有变,只是该段内存中的值变了,变成了2.

再来看:

?
1
int b = a;

图解Python变量与赋值

当把变量a赋值给另外一个变量b时,相当于把值拷贝了一份传递给变量b,b是新开辟的一段内存区域 。

而在python中,“变量”的严格叫法是“名字(name)”,也可以理解为标签,就像我们人的姓名一样,名字就是挂在人身上的一个标签.

?
1
2
3
4
>>> 10 - a
traceback (most recent call last):
  file "<stdin>" , line 1 , in <module>
nameerror: name 'a' is not defined

比如上面这段错误报的是name 'a' 没有定义,而没有说成 variable.

在python中,给变量赋值就是相当于给对象贴标签,就像我们给人取名字一样,变量本身是没有任何意义的,它没有类型信息,真正的信息都在对象身上.

例如

?
1
a = 1

图解Python变量与赋值

python内部首先会分配一段内存空间用于创建整数对象1,然后给这个1贴上名为a的标签.

然后执行 。

?
1
a = 2

python接着会在另一块内存区域创建整数对象2,然后把标签a从1身上撕下来贴在2身上,此时,我们没法再通过a来得到1这个值了.

图解Python变量与赋值

现在把名字a赋值给另外一个名字b 。

?
1
b = a

图解Python变量与赋值

相当于在刚才的2身上又贴了一个新的标签b,注意,这里和c语言是完全不一样的,定义b的时候不需要分配内存空间,这样我们既可以通过a来访问2也可以通过b来访问2,访问的都是同一个对象,就好比我们给宝宝取名时既有小名也有大名,其实叫的都是同一个人.

虽然我们通常在python中还是用"变量"的叫法(因为在编程语言中这是一种通用叫法),但是我们需要理解python中的变量不同于其他语言,变量只是一个名字.

理解了python中的变量与赋值后,再来看函数的参数传递,如下所示:

?
1
2
3
4
5
6
7
>>> def fun_a(a):
...   a = a + 4
...
>>> g = 0
>>> fun_a(g)
>>> g
0

全局变量g传递给函数fun_a时,相当于函数中的参数a也将作为标签贴在0上,随后a被重新赋值了(a=a+4),相当于从0撕下标签a贴到4身上,然后g依然还是0上面的标签.

图解Python变量与赋值

再来看这个函数,传递的是一个列表对象 。

?
1
2
3
4
5
6
7
8
>>> def fun_b(names):
...   names[ 0 ] = [ 'x' , 'y' ]
...
>>> n_list = [ 'a' , 'b' , 'c' ]
>>> fun_b(n_list)
>>>
>>> n_list
[[ 'x' , 'y' ], 'b' , 'c' ]

与前面的步骤还是一样的,names 和 n_list 都是['a','b','c']上的一个标签,只是列表中的第0个元素被重新赋值了,但是names和 n_list 依然都贴在这个列表对象身上,虽然 n_list的值更新了,但对象依然是原来那个对象。就好比张三和小张都是同一个人,现在给小张换件衣服时,其实就是给张三换件衣服,人还是那个人,只是它身上的东西发生了变化.

图解Python变量与赋值

以上内容就介绍到这,大家可以继续看下面的相关文章.

原文链接:https://foofish.net/python-variable.html 。

最后此篇关于图解Python变量与赋值的文章就讲到这里了,如果你想了解更多关于图解Python变量与赋值的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com