图解Python变量与赋值

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

int a = 1;

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

现在给变量a重新赋值

a = 2;

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

再来看:

int b = a;

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

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

>>> 10-aTraceback (most recent call last):  File "<stdin>", line 1, in <module>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)>>> g0

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

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

>>> 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之禅

原文地址:http://blog.51cto.com/9478652/2060200

时间: 2024-10-14 23:43:40

图解Python变量与赋值的相关文章

图解快三源码红黑玩法跨度等Python变量与赋值

图解快三源码红黑玩法跨度(企鹅:212303635)[阿酋联源码论坛-aqiulian.com]等Python变量与赋值 Python是一门独特的语言,与C语言有很大区别,初学Python很多萌新表示对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如: int a = 1; a 就是内存空间中的一小块区域,就像是一个大房间里面的一个小盒子,赋值就是把整数1装载到盒子里面. 现在给变量a重新赋值 a = 2; 盒子依然是那个盒子,也就是说

Python 变量(赋值,数据类型,数据类型转换)

一.python 变量赋值方式有三种: 1.直接赋值:age = 28 2.多个变量赋值 age, sex = 28, 1  #每个变量都必须要有个对应的值 3.特殊形式的赋值  a = b = 28 注意,变量使用之前必须赋值,这点和C++不同,因为python 变量前面没有类型修饰符,也就无法分配存储空间: 变量名不能以关键字来命名:只能以字母,数字,和下划线来命名,不能以数字作为开头,可以以下划线开头,一个下划线也可以成为变量名 变量名区分大小写 题外话:为什么要用变量名,好处有2个: 1

[python]变量和赋值

1. python的变量名以字母开头,包含字母.数字.下划线. 2. python是动态类型语言,即不需要预先声明变量的类型.变量的类型和值在赋值的时候被初始化. 变量赋值通过等号来执行. 代码: counter = 0 miles = 1000.0 name = 'Bob' counter = counter + 1 kilometers = 1.0 * miles / 1000 print '%d miles is the same as %d km' % (miles, kilometer

python变量内存浅析

1. Python变量 如果把单一值变量称为一维变量,把可以扩展元素的变量称为多维变量,则python的变量可以划分如下: 变量维度 Python变量 说明 一维 数字 int(有符号整型) 数字类型可以做转换 long(长整型[也可以代表八进制和十六进制]) float(浮点型) complex(复数) 字符串 字符串有丰富的运算符和内嵌函数: 有格式化输出: 二维 列表 除了元祖外,列表和字典可以灵活的扩展元素 元组 字典 2. Python变量的赋值处理 这里主要分析情况为,将原始变量赋值

python变量赋值的几种形式细节

变量赋值的几种形式细节 本文解释python中变量赋值的形式,并解释一些细节.后面还有一篇文章解释python中按引用赋值的文章. python中变量赋值的几种形式. x = "long" # (1).基本形式 x, y = "long", "shuai" # (2).元组对应赋值 [x, y] = ["long", "shuai"] # (3).列表对应赋值 a, b, c, d = "long

python基础(变量,常量,python变量内存管理,变量的三个特征,花式赋值,注释 )

python基础 变量 定义:变量用来描述世间万物变化的状态 组成: 变量名:接收变量值 赋值符号:把变量值赋值给变量名 变量值:就是一个数值 注意: 变量名由数字/字母/下划线组成,不能以数字开头 变量名不能以下关键字命名 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global',

Python 编程入门(4):变量与赋值

以下所有例子都基于最新版本的 Python,为了便于消化,每一篇都尽量短小精悍,希望你能尽力去掌握 Python 编程的「概念」,可以的话去动手试一下这些例子(就算目前还没完全搞懂),加深理解. 经过前几章的铺垫,终于要讲到变量和赋值这个非常基本的「语句」了!其实之前你已经见过这种操作了. 变量基本上就是某个值的名字.合法的变量名的规则,以下划线( _ )或者字母开头,由字母,下划线( _ )和数字组成. 基本规则: 名字 = 表达式 a = 5 print(a) 这个操作叫做「赋值」,先求出右

Python 变量类型及变量赋值

在 Python 中,变量不一定占用内存变量.变量就像是对某一处内存的引用,可以通过变量访问到其所指向的内存中的值,并且可以让变量指向其他的内存.在 Python 中,变量不需要声明,但是使用变量之前,一定要先对变量进行赋值.当创建了一个新对象时,Python 会向操作系统请求内存,Python 本身实现了内存分配系统.变量类型指的是变量所指向的内存中 对象 的类型.Python 中变量赋值使用 = 等号,等号左面为创建的变量,等号右面为需要的值. # #创建一个变量名为 a 的变量 # a =

图解Python 【第五篇】:面向对象-类-初级基础篇

由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节内容一览图: 今天只讲类的基础的面向对象的特性 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数,对象是一个类的实例 实例(instance):一个对象的实例化实现. 标识(identity):每个对象的实例都需要一个可