python基础
引用
在Python中,变量也成为:对象的引用。因为,变量存储的就是对象的地址。变量通过地址引用了“对象”。
变量位于:栈内存
对象位于:堆内存
 
- Python是动态类型语言
 
变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。
- Python是强类型语言
 
每个对象都有数据类型,只支持该类型支持的操作。
Python标识符命名规则
| 类型 | 规则 | 例子 | 
| 模块和包名 | 全小写字母,尽量简单。多个单词之间用下划线 | math,os | 
| 函数名 | 全小写字母,多个单词之间用下划线隔开 | phone,my_name | 
| 类名 | 首字母大写,采用驼峰原则。多个单词时,每个单词第一个字母大写,其余部分小写 | Myphone,Phone | 
| 常量名 | 全大写字母,多个单词使用下划线隔开 | MAX_SPEED、SPEED | 
删除变量和垃圾回收机制
可以通过del语句删除不再使用的变量
  
如果对象没有变量引用,就会被垃圾回收器回收,清空内存空间。
链式赋值
链式赋值用于同一个对象赋值多个变量。
x=y=123 相当于 x=123; y=123
系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致)
a, b, c = 4, 5, 6 相当于 a=4, b=5, c=6
【操作】使用系列解包赋值实现变量互换
a, b = 1, 2
a, b = b, a
常量
Python不支持常量,即没有语法规则限制改变一个常量的值,我们只能约定常量的领命规则,以及在程序的逻辑上不对常量的值作出修改。
MAX_SPEED = 120
MAX_SPEED = 140 #实际是可以修改的,只能逻辑上不做修改。
最基本内置数据类型介绍
每个对象都有类型,Python中最基本的内置数据类型:
1. 整形
整数,10, 80
2. 浮点型
小数, 3.14或者科学计数法314e-2
3. 布尔型
表示真假,仅包含: True False
4. 字符串型
由字符组成的序列,“abc”, "程序员"
数字
Python支持整数和浮点数,我们可以对数字做如下运算:
+ - * /(浮点数除法) //(整数除法) %(模,取余) **(幂)
使用divmod()函数同时得到商和余数:
divmod(13, 3) 得到的结果是(4, 1) divmod()返回的是一个元祖。
使用int()实现类型的转换:
1. 浮点数直接舍去小数部分。如int(9.9) 结果是:9
2. 布尔值True转为1, False转为0。如: int(True)结果是1
3. 字符串符合整数格式(浮点数格式不行)则直接转成对应整数 int("456"),否则会报错int("456abc")
自动转型:
整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0的结果是10.0
Python3中,int可以存储任意大小的整数,long被取消,它可以做超大数的计算,而不会造成整数溢出,这也是Python特别适合科学运算的特点。
浮点数
浮点数,称为float
浮点数用科学计算法表,比如 3.14,表示成:314E-2 或者 314e-2
这些数字在内存中也是按照科学计数法存储。
类型转换和四舍五入
1. 类似于int(), 我们也可以使用float()将其他类型转化成浮点数。
2. 整数和浮点数混合运算时,表达式结果自动转型成浮点数
3. round(value) 可以返回四舍五入的值
注:但不会改变原有的值,而是产生新的值
增强型赋值运算符
运算符 +、-、*、/、//、**、% 和 = 结合可以构成“增强型赋值运算符”
运算符: +=、-=、*=、/=、//=、**=、%=
注意:“+=” 中间不能加空格
时间的表示
计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒(1/1000秒)进行计算,我们也把1970年这个时刻称为“unix时间点”。
Python中可以通过time.time() 获得当前时刻,返回的值是以秒为单位,带微妙(1/1000毫秒)精度的浮点值。
布尔值
Python2中没有布尔值,直接使用数字0表示False,数字1表示True。
Python3中,把True和False定义成了关键字,但他们的本质还是1和0,甚至可以和数字相加
比较运算符
所有比较运算符(==、!=、>、<)返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。
逻辑运算符
| 运算符 | 格式 | 说明 | 
| or 逻辑或 | x or y | 
 x 为 True,则不计算 y,直接返回 True x 为 False,则返回 y  | 
| and 逻辑与 | x and y | 
 x 为 True,则返回 y 的值 x 为 False,则不计算 y,直接返回 False  | 
| not 逻辑非 | not x | 
 x 为 True,返回 False x 为 False,返回 True  | 
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址,即 id。
| 运算符 | 描述 | 
| is | is是判断两个标识符是不是引用同一个对象 | 
| is not | is not 是判断两个标识符是不是引用不同对象 | 
  is 与 ==  区别:
is 用于判断两个变量引用对象是否为同一个,即比较对象的地址(id)。
== 用于判断引用变量引用对象的值是否相等(value),默认调用对象的__eq__()方法。
整数缓存问题
Python仅仅对比较小的整数对象进行缓存(范围 [-5,256]),而并非是所有整数对象,需要注意的是,这仅仅是在命令行中执行,而在pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是 [-5,任意正整数])。
总结
1、is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;
2、== 比较的是两个对象的内容是否相等,值是否相等;
3、小整数对象 [-5,256] 在全局解释器范围内被放入缓存供重复使用;
4、is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。
字符串基本特点
字符串的本质是:字符序列。Python的字符串是不可变的,我们无法对原字符串做任何修改。但可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。
Python不支持单字符类型,单字符也是作为一个字符串使用的。
字符串的编码
Python3直接支持Unicode,可以表示世界上任何书面语言的字符。Python3的字符默认就是16位Unicode编码,ASCII码就是Unicode编码的子集。
使用内置函数 ord() 可以把字符串转换成对应的 Unicode码
使用内置函数 chr() 可以把十进制数转换成对应的字符。
引号创建字符串
我们可以通过单引号或者双引号创建字符串,使用这两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。
连续三个单引号或三个双引号,可以帮助我们创建多行字符串。
空字符串和 len() 函数
Python允许空字符串的存在,不包含任何字符且长度为0。
len() 用于计算字符串含有多少字符。
                    
                
                
            
        
浙公网安备 33010602011771号