python变量图⽚_图解Python变量与赋值
Python是⼀门独特的语⾔,与C语⾔有很⼤区别,初学Python很多萌新表⽰对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟⼀块内存区域,⽤于存储值,例如:
int a = 1;
a 就是内存空间中的⼀⼩块区域,就像是⼀个⼤房间⾥⾯的⼀个⼩盒⼦,赋值就是把整数1装载到盒⼦⾥⾯。
现在给变量a重新赋值
a = 2;
盒⼦依然是那个盒⼦,也就是说内存地址没有变,只是该段内存中的值变了,变成了2。
再来看:
int b = a;
当把变量a赋值给另外⼀个变量b时,相当于把值拷贝了⼀份传递给变量b,b是新开辟的⼀段内存区域
⽽在Python中,“变量”的严格叫法是“名字(name)”,也可以理解为标签,就像我们⼈的姓名⼀样,名字就是挂在⼈⾝上的⼀个标签。
>>> 10-a
Traceback (most recent call last):
File "", line 1, in
NameError: name 'a' is not defined
⽐如上⾯这段错误报的是name 'a' 没有定义,⽽没有说成 variable。
在Python中,给变量赋值就是相当于给对象贴标签,就像我们给⼈取名字⼀样,变量本⾝是没有任何意义的,它没有类型信息,真正的信息都在对象⾝上。
例如:
a = 1
Python内部⾸先会分配⼀段内存空间⽤于创建整数对象1,然后给这个1贴上名为a的标签。
然后执⾏
a=2
Python接着会在另⼀块内存区域创建整数对象2,然后把标签a从1⾝上撕下来贴在2⾝上,此时,我们没法再通过a来得到1这个值了。
现在把名字a赋值给另外⼀个名字b
b = a
相当于在刚才的2⾝上⼜贴了⼀个新的标签b,注意,这⾥和C语⾔是完全不⼀样的,定义b的时候不需要分配内存空间,这样我们既可以通过a来访问2也可以通过b来访问2,访问的都是同⼀个对象,就好⽐我们给宝宝取名时既有⼩名也有⼤名,其实叫的都是同⼀个⼈。
虽然我们通常在Python中还是⽤"变量"的叫法(因为在编程语⾔中这是⼀种通⽤叫法),但是我们需要理解Python中的变量不同于其他语⾔,变量只是⼀个名字。
理解了Python中的变量与赋值后,再来看函数的参数传递,如下所⽰:
>>> def fun_a(a):
... a = a+4
...
>>> g = 0
>>> fun_a(g)
>>> g
全局变量g传递给函数fun_a时,相当于函数中的参数a也将作为标签贴在0上,随后a被重新赋值了(a=a+4),相当于从0撕下标签a贴到4⾝上,然后g依然还是0上⾯的标签。
再来看这个函数,传递的是⼀个列表对象
>>> def fun_b(names):
... names[0] = ['x', 'y']
编程先学c语言还是python...
>>> 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之禅」,回复「1024」免费获取Python资源

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。