变量

1.什么是变量

变量从字面意思可以理解成:是变化的量。但是这样理解和没有理解貌似没有什么区别,我们把变量两个字拆分看看。

我们首先来想想看你是怎么认识我的,今天来你会认识我,明天来你还会认识我。那你是不是记住我这个人的典型特征,比如我的名字Nick、体重140、身高180…世间万物我们是不是都是这样去认识的?毫无疑问是的。既然人能识别世间万物,那么我们之前一直把计算机想象成人,那是不是说计算机也能识别世间万物呢?对的。计算机通过记录我们的状态认识我。这就是量的概念。

量:记录现实世界中的状态,让计算机能够像人一样去识别世间万物。

今天我可能180,明年我是不是可能就是185了(5cm不过分),那这种状态是不是会发生变化。

变:现实世界中的状态是会发生改变的。

2.为什么有变量?

对于现实世界,一定是要有一个变量来描述世间万物的。但是计算机为什么也要有变量的概念呢?其实计算机中程序的运行就是一系列状态的变化,如王者荣耀中账号等级0级到30级、废铁到王者;植物大战僵尸中僵尸打着打着就死了。

3.定义变量

就是按照一定的格式赋值,具体格式就是下面对的变量组成的格式。(个人理解)

4.变量的组成

从我们上米昂定义的变量可以看到,变量的组成分为以下三个部分:

变量名:变量名用来引用变量值,但凡需要用变量值,都需要通过变量名。

赋值符号:赋值

变量值:存放数据,用来记录现实世界中的某种状态。

5.变量名的命名规范

一定要记住,定义一个变量其实就是在记录现实世界中的的状态,并且存永远不是目的,取才是目的。所以变量的命名应该满足以下三个规范:

变量的命名应该能反映变量值所描述的状态,切记不可用中文

变量名必须用字母数字下划线组合,并且变量名的第一个字符不能是数字。

关键字不能声明为变量名

6变量名的两种风格

驼峰体

下划线

常量

变量是变化的量,常量则是不变的量。python中没有使用语法强制定义常量,也就是说,python中定义常量本质上就是变量。如果非要定义常量,变量名必须全大写。

如果是常量,那就没必要更改,所以python就只制定了一个规范,而没指定常量的语法,因此常量也是可以修改的,但不建议。

Python变量内存管理

1.变量存哪儿?

x = 10

当我们在p1.py中定义一个变量x = 10,那么计算机把这个变量值10存放在哪里呢了?我们回顾计算机的三大核心组件为:CPU、内存和硬盘。一定不是CPU,那是存放在内存还是硬盘中了呢?我们再回顾变量运行的三个过程,如果我们没有使用python解释器运行p1.py这个文件,那么x=10很明显只是很普通的四个字符x、=、1、0。而只有Python解释器运行了这个文件,那字符进入了内存,才会有变量这个概念。也就是说变量是存放在内存当中的。

变量存放在内存中这句话太宽泛了,我们把它具体化。现在想象我们在学校(电脑内存)里上课,学校每开一个班,学校都会开辟一个教室给这个班级上课用(存放变量值10),而班级的门牌号则是(变量名x)。也就是说,对于电脑内存这个大内存,每定义一个变量就会在这个大内存中开辟一个小空间,小空间内存放变量值10,然后内存给这个小空间一个变量名x(门牌号),x指向10。

2.Python垃圾回收机制

2.1 引用计数

从上述的解释我们可以知道只要某个变量值绑定着门牌号,就不是垃圾,反之变量值没有绑定着门牌号,这个变量值就是垃圾,python就会自动清理这个垃圾。这里我们对于这个门牌号给定一个专业的解释,在python中这个门牌号被称作引用计数。

x = 10 # 10引用计数加1为1

y = x # 10引用计数加1为2

x = 11 # 10引用计数减1为1;11引用计数加1为1

del y # 10引用计数减1为0,触发python垃圾回收机制,python清理10的内存占用

上述代码就是一个引用计数加减的过程。

3.小整数池

在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。

变量的三个特征

打印 :print

判断变量值是否相等:name1 == name2

判断变量id是否相等:整数池范围内的返回值都是True,但是不在的如果是一个一个赋值的返回的是False,如下:

x = 257

z = 257

print(x is z)

# False

花里胡哨赋值

1.链式赋值

a = 10

b = 10

c = 10

d = 10

#可以写为

a = b = c = d = 10

#输出结果一样

2.交叉赋值

a = 10

b = 100

#可以写为

a , b = 10,100

#输出结果一样

注释

就是方便你看的和别人看的 ,核心就是#

python对变量和值的管理方式_变量 常量 Python变量内存管理 赋值方式 注释相关推荐

  1. python是基于什么的内存管理方式_为什么说Python采用的是基于值的内存管理模式...

    内存管理架构: 1.python的内存管理机制由两部分组成,其由PYMALLOC_DEBUG控制,在debug模式下的内存管理机制和正常模式下的内存管理模式. 2.python的内存管理机制可以抽象成 ...

  2. multiprocessing.manager管理的对象需要加锁吗_iOS内存管理布局-理论篇

    苹果设备备受欢迎的背后离不开iOS优秀的内存管理机制,那iOS的内存布局及管理方案是怎样的呢?我们一起研究下. 内存管理分为五大块 栈区(stack):线性结构,内存连续,系统自己管理内存,程序运行记 ...

  3. multiprocessing.manager管理的对象需要加锁吗_iOS内存管理布局及管理方案理论篇

    苹果设备备受欢迎的背后离不开iOS优秀的内存管理机制,那iOS的内存布局及管理方案是怎样的呢?我们一起研究下. 内存管理分为五大块 栈区(stack):线性结构,内存连续,系统自己管理内存,程序运行记 ...

  4. 下列关于python运算符的使用描述正确的是_以下关于 Python 字符串的描述中,正确的是( )...

    [单选题]3*1**3 表达式输出结果为________ [多选题]以下的布尔代数运算正确的是( ) [单选题]下列________不是Python的数据类型. [单选题]下列不是Python语言关键 ...

  5. Spark 内存管理详解(下):内存管理

    本文转自:Spark内存管理详解(下)--内存管理 本文最初由IBM developerWorks中国网站发表,其链接为Apache Spark内存管理详解 在这里,正文内容分为上下两篇来阐述,这是下 ...

  6. Linux内存管理:一个故事看懂CPU内存管理技术

    目录 8086 32位时代 虚拟内存 分页交换 现在 往期热门回顾 推荐阅读 还记得我吗,我是阿Q,CPU一号车间的那个阿Q. 今天忙里偷闲,来到厂里地址翻译部门转转,负责这项工作的小黑正忙得满头大汗 ...

  7. python基于值的自动内存管理方式_为什么说Python采用的是基于值的内存管理模式...

    展开全部 内存管理架构: 1.python的内存管理机制由两部分组成,其由PYMALLOC_DEBUG控制,在debug模式下的内存管理机制和正常模32313133353236313431303231 ...

  8. python基于值的内存管理模式_为什么说python采用的是基于值的内存管理模式

    匿名用户 1级 2018-05-20 回答 先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计数 (3)内存池机制 一.垃圾回收: python不像C++, ...

  9. python中内存管理机制一共分为多少层_python 内存管理机制

    内存管理机制 ​python中万物皆对象,python的存储问题是对象的存储问题,并且对于每个对象,python会分配一块内存空间去存储它 ​Python的内存管理机制:引入计数.垃圾回收.内存池机制 ...

  10. 判断表达式值是否为空_如何在 Python 中判断列表是否为空

    在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么? 在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素. 我们可以把判断表达式可以分为两个阵营: ...

最新文章

  1. 【Flutter】Flutter 混合开发 ( 混合开发中 Flutter 的 热重启 / 热加载 )
  2. mysql concat 去掉重复_mysql - concat字段具有共同的重复密钥,并删除那些重复项,从而留下一个 - 堆栈内存溢出...
  3. 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换?
  4. FPGA硬件学习基础知识点总结(1)
  5. 工作302:scss目录编写
  6. 白银T+D [Ag(T+D)]业务介绍
  7. RenderSection
  8. GPT Plus Money!B O O M
  9. oracle的一些学习
  10. (day 08 - 先序遍历+判断+递归)剑指 Offer 26. 树的子结构
  11. 程序员,如何在工作之外,增加自己的收入?
  12. 关于boot.ini文件里的/noexecute=optin
  13. html5 拖放游戏,HTML5拖放API实现拖放排序的实例代码
  14. 深入解析Windows操作系统(笔记2)
  15. stm32f10x寄存器设置脚本
  16. iOS 唤起第三方App
  17. 好用的 Puppeteer 辅助工具 Puppeteer Recorder
  18. keras简单的实际入门教程
  19. win 2016 ssh_【Win】Print Conductor 全能批量打印工具兼容所有打印机
  20. 【香蕉oi】Game(SAM,SG函数,假题)

热门文章

  1. random.RandomState()
  2. 惊艳!华为折叠屏5G手机Mate X发布,称3秒下载1GB视频
  3. 02 如何测量节点特征?
  4. C++11中std::promise的使用
  5. HttpUnit介绍
  6. 零基础学习openstack【完整中级篇】及openstack资源汇总
  7. 【幻化万千戏红尘】qianfeng-Android-Day16动画
  8. c和java共同点_java和c语言有什么共同点?
  9. 动漫网站基于jquery的横向手风琴特效
  10. UI设计细分为哪些具体职位?国内提供了哪些?