2017-04-06 00:17:12
注释的分类
单行注释 | # 我是注释,可以在里写一些功能说明之类的哦 print('hello world') |
多行注释 |
|
变量
变量:就是一个容器用来存储数据的,存储数据的目的就是为了运算
比如:我们用手机打电话进行拨号时,我们输入完号码,当我们按拨号键时那么手机怎么能知道我们刚才按的号码是多少呢?在我们输入号码
时手机是不知道我们要输入什么,手机要想知道就需要用一个变量来存储我们输入的号码,所以在拨打电话时,你输入号码是多少,就会
从变量中取出你刚才输入的号码进行拨打.
程序中如果想反复引用某一个字面值常量就需要用变量来存储,Python变量区分大小写
Python属于动态类型,在声明变量时并没有给它声明一个数据类型(无类型约束),2类型取决于关联对象(而是由给变量所赋的值的类型确定的)
变量本身是没有类型的可以任意指向任意任意类型的变量引用
当一个对象没有变量引用时,Python内部有一个垃圾回收机制,垃圾回收机值侦测到如果没有引用的某一个变量
在特定的实际会被回收,释放它所占用的资源,那它怎么能知道一个对象有没有被引用呢?--在内部有一个引用计数器,它通过引用计数器
看它是不是0从而来判断是不是有变量引用它
共享引用 | 多个变量指向同一个对象,所谓同一个对象指的是通过id()内置函数检测出来的内存地址是相同的这么一个情况 |
Python垃圾回收机制: |
Python自动释放未被引用的对象 通过对象引用计数器来计算得到一个值来判断对象是不是被引用 |
存储: |
对象有类型,存储在内存区域 变量名指向实际对象,变量本身无类型 存储对象本身有类型描述以及带有引用计数器 |
Python是动态数据类型 |
|
共享引用:多个变量指向同一个对象,所谓同一个对象指的是通过id()内置函数检测出来的内存地址是相同的这么一个情况
上图x,y是不是指向同一个对象呢不好判断在Python中有一个内置函数id('tom')来判断对象的标识符(找出这个对象所存储的地址)
证明他两指向同一个内存地址
当我们在Python中声明多个变量时如果它的字面值相同那它的地址也是相同这种说法是错误的
Python处理机制将0-255之间的值都已经缓冲起来了,也就是说不管你声明不声明变量用不用,它已经在内存中给我们开辟好空间,已经把这个值给存起来了
那为什么存0-255呢因为0-255它的取值范围是8个bit位2的8次方 8个bit位所占的空间只有1个字节,1个字节所占的空间大小就是1个字符,也就是1个a所占的
硬盘空间是比较小的,所以它把0-255都缓冲起来了,在用的时候只要都指向同一个值,其实声明的是一个共享引用,0-255被缓冲起来了
当我们在声明一个新的变量还是等于这个范围的数值就不再开辟新的空间原因是这个范围所占的空间并不大,为了提高效率
那字符串为什么有的是共享引用有的不是呢
一般小型的字符串也是被缓冲了,长一点的就不缓存了
为什么有些不缓存呢,原因在于当我们取值范围更大时,存在的可能性就更多了,它没办法把你所有的可能性都考虑到,都给你缓冲起来,如果它缓冲了
你不用的话不也是占用内存空间吗,处于这样的考虑
变量用来存储数据,数据是有类型的,所以变量的类型有以下几种:
标识符
标识符由数字 字母 和下划线组成,数字不能开头
命名规则:大驼峰 小驼峰 多个单词使用下划线连接(Python推荐的命名方式)
关键字
查看关键字的方法
输出
常用的格式化输出符号 %s %d %f
换号输出
print("1234567890
-------") # 一行显示1234567890,另外一行显示-------
输入
Python2中还有一个input()输入的是什么类型得到的就是什么类型,而且会将输入的表达式执行运算,如果输入的是一段错误代码这个就很危险
所以在Python3中将这个废弃掉了
算术运算符
+ - * / //(取商) %(取余) **(幂)
赋值运算符
复合赋值运算符:
比较运算符:
逻辑运算符:
在Python3中 9/2=4.5
在Python2中 9/2 =4 (两个数相除保持数据类型不变)
数据类型转换
int() 字符串转换为数字
str()数字转为字符串
if |
一个条件判断 |
if else |
二选一 |
if elif else | 多选一 |
while | |
for |
for 临时变量 in 列表或者字符串等:
|
for else |
|
python中没有do while switch ++ -- | |
循环中break continue |