温馨提醒:本文默认使用3.X版本的Python
构建编程语言知识体系的学习套路:
1、XXX是什么
2、为什么要用XXX?
3、如何使用XXX
一、Python变量基础
按照此前所说套路对号入座:
1、变量是什么?
比如我正在写这篇文章!我双击打开后,Typora程序运行在CPU,通过内存将我存放于磁盘上的《Python基础-变量》这个笔记文件里面的内容转化为数据流;数据流会占用内存空间,且因为我不断修改添加而不断变化。那么我为了便于引用某段数据,给一段内存空间里的数据命名,这样就可以便捷地找到数据占用的内存空间的位置!这就是变量:即变量名+指向的内存空间!
2、为什么要用它?
如上所述,为了方便引用某段内存空间里面的数据!
3、如何使用它?
使用原则:先定义、后引用,定义格式为VARIABLE = VALUE;如下所示!
>>> sanxi=666
引用方式可以使用print等方式引用;如下所示:
>>> print(sanxi)
666
#print就是打印
二、变量命名规范
原则:见名知义。你用xxx=666,鬼知道你的xxx是什么意思!换成age=18,这样一看到就知道age代表年龄,值是18岁!
-
只能是字母、数字、下划线任意组合
-
不能以数字开头
-
不能用Python内置的关键词声明为变量名,下面给出Python內建的关键词表格
>>> help('keywords')
Here is a list of the Python keywords. Enter any keyword to get more help.
False class from or
None continue global pass
True def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
break for not
- 不用拼音、中文
- 用拼音和中文当变量名Python也是可以识别的,但是真实项目开发可能会遇到各种诡异问题,定位也非常麻烦,因此约定成俗不使用拼音和中文当变量名。
三、变量名的命名风格
- 纯小写+下划线(Python中推荐使用此方式);如:my_house = "zuomeng"
- 驼峰体,即单词首字母大写;如:MyHouse = "zuomeng"
四、变量值三个重要特征
1、ID
像身份证一样,每一段内存空间都拥有唯一标识符!反映的是变量值的内存地址,内存地址不同则ID不同!如下:
>>> print(id(sanxi))
139854554631056
2、TYPE
不同类型的值用来表示记录不同的状态!如下所示:
>>> sanxi=666
>>> print(type(sanxi))
<class 'int'>
#int即整数类型
3、VALUE
即值本身
>>> print('sanxi')
sanxi
五、身份运算
1、is
用于比较左右两个变量的值所对应的的身份(ID)是否相等
2、==
用于比较等号左右的值是否相等
值相等,ID可能不一样;即两个变量名值是一样的
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> sanxi=666
>>> chrystal=666
>>> print(id(sanxi),id(chrystal))
139965186591632 139965185571856
>>> sanxi == chrystal
True
>>> sanxi is chrystal
False
如sanxi=66,只要=号左侧是变量名,右侧是值,就一定会申请内存空间存放,而不管是否和之前的变量是否相同
六、小整数池
1、小整数池是什么?
从Python解释器启动那一刻开始,Python就会在内存中事先声明好一系列内存空间用于存放常用的整数,我们称之为小整数池,其池大小范围是:-5到256!
2、为什么要用它?
这是Python为了提升内存可用性对整数值做的优化!很容易理解,这个池肯定是有限的,因为自然数是无限的,声明过多会把内存给爆掉!至于为什么是-5到256,不要来问我,去问Python官方!
3、如何使用它?
只要你的值是这个池子里面的,就无需额外申请内存空间,Python会自动给你调用!
>>> sanxi=10
>>> haha=10
>>> print(id(sanxi),id(haha))
9079296 9079296
>>> sanxi is haha
True
>>> sanxi == haha
True
4、与pycharm池的差别
在pycharm这款集成开发环境软件上,更为激进!它设置的池更大,也更占内存。因此在命令行模式下是false,pycharm上可能是true。因为pycharm只是一款提升效率的工具,我们要以Python官方解释器为准。下面给出示例!
注意!!!以下示例是在pycharm上!!!
sanxi=-10
haha=-10
print(id(sanxi),id(haha))
print(sanxi is haha)
print(sanxi == haha)
下面是运行后的结果
140172555642576 140172555642576
True
True
Process finished with exit code 0
七、Python常量
即不变的量,跟变量对立;Python语法中没有常亮的概念(shell、C等语言有只读变量、常量),但在程序开发时会涉及到常亮的概念!Python业界约定小写字母全改为大写即代表常量,但这仅仅是一种约定成俗!我们程序员看到时不应该改,虽然你可以改。
八、内存管理
1、内存管理是什么?
声明变量需要占用内存空间,而内存空间是有限的,无休止地滥用终有一日会将内存占满!就好比一个水桶只能装那么点水,你不停往里边加水,装满了后水就会溢出!用时申请,不用时释放,这叫内存管理,即垃圾回收机制!
何为垃圾?当变量值被绑定的变量名被引用次数为零时,该变量值就无法被访问,即垃圾!
如图所示,sanxi=GZ=IT=666,那么666此值被引用次数为3;当del sanxi,del GZ,del IT后或其它原因导致666引用次数为0时,该变量值再也无法被访问,此时的666即成为没人要的垃圾!
2、为什么要用它?
内存溢出是极其危险的,会导致程序各种异常,甚至被人利用进行攻击!就好像你往水桶使劲装水,水满后不断溢出把你家都给淹没了!
3、如何使用它?
Python会自动回收引用计数为零的变量!哈哈!没错,Python自动帮你收拾了!